返回列表 發帖
wmh,您好,我使用jquery autocomplete的時候碰到了一點問題。

代碼如下:


<link rel="stylesheet" href="/5xun5mi/css/jquery.autocomplete.css" type="text/css"></link>
                <script src="http://www.google.com/jsapi" ></script>  
                <script language="javascript" type="text/javascript" >  
                        google.load("jquery", "1");
                </script>
                <script type="text/javascript" src="/5xun5mi/js/jquery.autocomplete.js" defer="defer" charset="GBK"></script>
               


<script language="javascript" type="text/javascript" charset=GBK>
     $("#searchtext").autocomplete("/5xun5mi/jsp/get_tip_data.jsp");
</script>


IE中運行時,總是提示紅色標注的哪行有錯,錯誤信息是:對象不支持此屬性或方法

然而在Firefox中運行是正常的,其錯誤控制台也沒有任何錯誤信息。

望wmh指教,謝謝!

TOP

回復 60# 的帖子

謝謝大大,已經可以了!

TOP

$q = join('', json_decode('["'. strtr($_GET['q'], '%u', '\u') . '"]'));
這一段是:

  • 先取得 GET 傳來的 q 這個變數
  • 把 %u 轉成 /u
  • 然後前後加上方括號
  • 將 JSON 轉回 Array
  • 再把 Array 接起來轉回字串


你可以在 http://json.org/ 取得 Java 處理 JSON 的 class
To infinity and beyond!

TOP

回復 50# 的帖子

DEAR 版大:
我也遇到相同的問題,但是我是用jsp & servlet來做的,
我的進度到了#41,用英文都沒有問題,但是用中文的話,
在後端就變成會得到???的值,
因為看bau720123已經解決了,
但是我對php不熟,所以不知道您寫的那一段是在做什麼?如下:
能否幫我解決這個問題,感恩!

$q = join('', json_decode('["'. strtr($_GET['q'], '%u', '\u') . '"]'));

TOP

我看了一下實做的內容,有兩個地方需要調整,第一個是 server 端輸出的資料,要改成一行一組資料的方式:
{ name: "催促揽", to: "13" }
{ name: "催送发票(底单)", to: "38" }
{ name: "催送单", to: "39" }
{ name: "(底单)", to: "43" }
再來是 client 端的部份,接到的 row 必須再處理一次:
                formatItem: function(row, i, max) {  
                        var row = eval('(' + row + ')');
                        return i + "/" + max + ": \"" + row.name + "\" [" + row.to + "]";  
                },  
                formatMatch: function(row, i, max) {  
                        var row = eval('(' + row + ')');
                        return row.name + " " + row.to;  
                },  
                formatResult: function(row) {  
                        var row = eval('(' + row + ')');
                        return row.to;  
                }  
這樣應該就可以囉...
To infinity and beyond!

TOP

管理员,这个问题怎么解决呀?一直没搞好

按照jquery中的实例做的,jsp页面中的javascript上:
$().ready(function() {
      $("#home_address").autocomplete('getJdtype.do', {
                minChars: 0,
                width: 310,

                matchContains: true,
                autoFill: false,
                formatItem: function(row, i, max) {
                        return i + "/" + max + ": \"" + row.name + "\" [" + row.to + "]";
                },
                formatMatch: function(row, i, max) {
                        return row.name + " " + row.to;
                },
                formatResult: function(row) {
                        return row.to;
                }
        });
}
控制器中:
public void getJdtype(HttpServletRequest request,
                        HttpServletResponse response) throws Exception {
                String parent = request.getParameter("q");
                //int count=0;
                String str = "";
                List<Map> list;
                
                if(StringUtils.isBlank(parent)){
                        //count=0;
                        //str=String.valueOf(count);
                        return;
                }else{
                        list = getTDkindByTG(Integer.valueOf(parent));
                        //count=list.size();
                        //str=String.valueOf(count);
                        for(Map map :list){
                                String name=String.valueOf(map.get("kindremark"));
                                String id=String.valueOf(map.get("acceptdkindid"));
                                str += "{ name: \""+name+"\", to: \""+id+"\" },\n";
                        }
                }
                str = "[" + str + "]";
                System.out.println(str);
                response.setContentType("text/html;charset=UTF-8");
                response.setHeader("Cache-Control", "no-cache");
                response.getWriter().write(str);
        }
页面显示部分,总是提示“undefined”
我在页面中直接调试http://localhost:8088/project/getJdtype.do?q=4
显示的内容为:
[{ name: "催促揽", to: "13" }, { name: "催送发票(底单)", to: "38" }, { name: "催送单", to: "39" }, { name: "(底单)", to: "43" }, ]

是不是要显示成数组形式,而不是字符串呢,但动态数组不知道各位是如何实现的。盼。。。。。。

TOP

server 端用哪種語言應該都不是問題喔,只要正確地將資料一行一行輸出即可。

你要貼出比較完整的程式碼嗎?上面這一段看不太出來問題在哪。
To infinity and beyond!

TOP

使用JSP提供資料

大大你好,我是用JSP提供資料
JSP檔如下程式碼

接收頁可以顯示資料沒問題
但當我在輸入框輸入 a 時
應該是只有出現2個選項
不過卻四個選項都出來了
繼續再輸入 b
又變成只剩一個選項了(abc)
有人用jsp來提供資料,有問題的嗎??
<%@ page contentType="text/html; charset=big5" language="java" errorPage="" %>
<%
         out.print("abc\n");
         out.print("babc\n");
         out.print("cabc\n");
         out.print("aabc\n");        
%>

TOP

了解謝謝您低說明
再次感謝
邁向神乎其技的境界^^

TOP

很明顯啊,你的問題出在輸入時不是用 \n 換行,而是用 html 的 <br/> 換行:
Response.Write(data[a] + "<br/>");
上面這一行應該改成:
Response.Write(data[a] + "\n");
To infinity and beyond!

TOP

返回列表 回復 發帖