0

私は常にポート13001をリッスンするHttpListenerContextクラスを持っています.ajax呼び出しが来るたびに、次のようにデータを渡しています

context.Response.Close(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject("jsonp({'Status':'Good'})")), false);

次に、次のように Jquery ajax を使用してそのサーバーを呼び出しています。

  $.ajax({
        url: "http://localhost:<13001>/hit/number',
        type: "GET",
        async: false,
        contentType: "application/json",
        dataType: "jsonp",
        jsonp: "jsonp",

        success: function (data, textStatus, xhr) {
            console.log(data);
        },

        error: function (xhr, ajaxOptions, thrownError) {
            console.log("Error");
        }
  });

Ajax Get Request が成功し、次のように Chrome Network->Response タブで応答を確認できます

"jsonp({"Status":"Good"})"

しかし、Ajax Success 関数でこのメッセージを取得できません。常にエラーが表示されます。誰でも私がどこを間違えたのか教えてください。

Response Headers

Access-Control-Allow-Origin:*
Cache-Control:private
Content-Length:23
Content-Type:application/javascript
Date:Fri, 27 Sep 2013 01:12:25 GMT
Server:Microsoft-HTTPAPI/2.0
4

2 に答える 2

0

私の直感では、完全な HttpResponse を返していないことがわかります。テキスト文字列を返すだけです。有効な HttpResponse ではないため、jQuery は失敗したと見なします。

context.Response.StatusCode = 200;解決策:応答を送信する前にこれを追加してみてください。応答に content-type も追加する必要がある場合があります。

 context.Response.StatusCode = 200;                
 context.Response.Close(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject("jsonp({'Status':'Good'})")), false);
于 2013-09-27T02:43:40.847 に答える
0

oData サービスで直面した同じ問題は、URL の末尾に「$callback」キーワードを追加することで修正されました。したがって、ajax URL は https://example.com/ApplicationData.svc/Products ?$format=json&$callback=?のようになります。

礼儀 : http ://www.kendoui.c​​om/blogs/teamblog/posts/11-08-24/cross-domain_queries_to_odata_services_with_jquery.aspx

于 2013-10-31T06:33:11.727 に答える