2011-01-27 13 views
2

何らかの理由により、以下のスクリプトが動作していません。サーバサイドの自動補完問題json

これは私がJSONデータを生成するために使用していたコードです:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
    Response.Clear() 
    Response.Write(generate_json_data()) 
    Response.End() 
End Sub 

これは、画面上に次の出力を生成します。

[ {id:0,value:"c++"}, {id:1,value:"java"}, {id:2,value:"php"}, {id:3,value:"coldfusion"}, {id:4,value:"javascript"}, {id:5,value:"asp"}, {id:6,value:"ruby"} ]; 

これはいた、これまでのところ私はjqueryのです動作していないようです。入力フィールドに入力すると、jsonデータからのデータの一部を表示する必要がありますが、エラーは発生しません。

$("input").autocomplete({ 
    source: "serverside_array.aspx", 
    dataType: "json", 
    select: function (event, ui) { 
     $("#txtAllowSearch").val(ui.item.value); // display the selected text 
     $("#txtAllowSearchID").val(ui.item.id); // save selected id to hidden input 
    } 
}); 

EDIT 1:クロムでの開発ツールからヘッダ10

Request URL:http://intranet/test_array.aspx?term=j 
Request Method:GET 
Status Code:200 OK 
Request Headers 
Accept:application/json, text/javascript, */* 
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Content-Type:application/x-www-form-urlencoded 
Host:intranet 
Referer:http://intranet/rights_stage_three.aspx 
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.652.0 Safari/534.17 
X-Requested-With:XMLHttpRequest 
Query String Parameters 
term:j 
Response Headers 
Cache-Control:private 
Content-Length:204 
Content-Type:application/json; charset=utf-8 
Date:Thu, 27 Jan 2011 16:11:14 GMT 
Server:Microsoft-IIS/6.0 
X-AspNet-Version:2.0.50727 
X-Powered-By:ASP.NET 

EDIT 2:REPONSEデータXHRを見て、私は次の

名test_array.aspxを取得

メソッド取得

ステータス200 OK

タイプのアプリケーション/ JSON

EDIT 3保留

サイズ204B

時間:

は今、私は完全に混乱しています。私はそれは単ににaspxページによって生成されたContentTypeを変更することにより、作業ました:

text/xml 

代わりの

applicaiton/json 

私はJSONを返すいたときに、なぜそれがtext/xmlでで動作しますか?

+1

jsonを生成するためにasmxなどのWebサービスを使用しないのはなぜですか? –

+0

これは私が問題を抱えている理由ですか?なぜ私はj​​sonを生成するためにWebサービスを使用していないのですか? – oshirowanen

+1

これは、。aspxにはそれほど変わっていません。これが.asmxが使われている理由です。 asmxに関するいくつかの背景について、私はそれらを設定することについて前に答えました:http://stackoverflow.com/questions/2225781/asp-net-web-method-that-accepts-a-listcustomobject-is-failing-with-web-service/2268178#2268178 –

答えて

1

FirebugやOperaなどのwebdevツールとChromesビルトインのdev-toolsを使用して、HTTPリクエストやレスポンスを一覧表示できます。

JavaScriptエラーが記録されているかどうかを確認します。

応答がない場合、レスポンスをチェックし、応答Content-Typeがコールバックの場合は、JSONデータの場合はapplication/jsonとなります。

コンテンツタイプがないと、XSSに対するセキュリティのためにajaxリクエストが失敗することがあります。

+0

クロム10のデベロッパーツールを使用すると、表示されず、JavaScriptエラーメッセージが表示されないようです。しかし、それは、入力フィールドに何かを入力すると、htmlを正常に取得したことを報告します。私はそれがjsonの検索を報告するはずだと思っていたでしょう... – oshirowanen

+0

私はオリジナルの投稿を更新して、 XHRに答える。 – oshirowanen

+0

元の質問に編集3を見てください。 – oshirowanen

1
[ {id:0,value:"c++"}, {id:1,value:"java"}, {id:2,value:"php"}, {id:3,value:"coldfusion"}, {id:4,value:"javascript"}, {id:5,value:"asp"}, {id:6,value:"ruby"} ]; 

文字列の末尾にセミコロンがあってはなりません。また、応答のContent-Typeはapplication/jsonである必要があります。すべての値を二重引用符で囲むことを検討してください。それがなくても動作するかもしれませんが、それがないと適切なJSON形式ではありません。これは、標準のJSON文字列です。

[{"id":0,"value":"c++"}, {"id":1,"value":"java"}, {"id":2,"value":"php"}] 
+0

オリジナルの質問に編集3を見てください。 – oshirowanen

関連する問題