2

何らかの理由で、以下のスクリプトが機能しません。

これは、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
    }
});

編集 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

編集 2: 応答データ XHR を見ると、次のようになります

名前 test_array.aspx

メソッド取得

ステータス 200 OK

タイプアプリケーション/json

サイズ 204b

保留中の時間

編集3:

今、私は完全に混乱しています。aspx ページによって生成された contenttype を次のように変更するだけで機能しました。

text/xml

それ以外の

applicaiton/json

json を返すときに text/xml で機能するのはなぜですか?

4

2 に答える 2

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"}]
于 2011-01-27T18:03:17.173 に答える
1

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

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

そうでない場合は、応答を確認し、応答の Content-Type がtext/javascriptコールバックであるかapplication/json、JSON データのみであるかを確認します。

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

于 2011-01-27T15:12:50.663 に答える