0

私は一日中この問題に取り組んできましたが、ただ困惑しています。

JSON シリアル化された応答を返す .NET Web サービスがあり、シリアル化するデータにアクセスできる新しいものに切り替えようとしています。どちらのサービスも、リクエストを処理するロジックに関しては同じように見えます。どちらも ContentType を application/json に設定し、ストリームに書き込みます。

私は jQuery 1.7.1 を使用しています。クライアント側では、getJSON を URL とともに作業エンドポイントに送信します。Firebug は、返された結果がデータでいっぱいであることを示し、JSONLint などで検証されます。onError イベントをキャッチするために .ajaxSetup() を設定すると、次のようになります。

textStatus: parsererror
Error Thrown: Error: jQuery17109478366139694514_1337880510219 was not called
jqXHR Response Text: undefined

(私はメッセージをフォーマットしました)

私が見ている JSON は、次のようなものです。

[
    {
        "sourceType": "KML",
        "dataUrl": "http://firefly.geog.umd.edu/kml/download.php?file=kml_global_modis-hotspots.kml",
        "id": "https://example.com/KmlFeeds::KMLFeeds::FIRMS::World",
        "title": "FIRMS - World",
        "description": "MODIS hotspot / fire and burned area",
        "originator": "NASA LANCE",
        "spatialDomain": null
    },
    {
        "sourceType": "KML",
        "dataUrl": "http://firefly.geog.umd.edu/kml/download.php?file=Alaska_24h.kml",
        "id": "https://example.com/KmlFeeds::KMLFeeds::FIRMS::Alaska",
        "title": "FIRMS - Alaska",
        "description": "MODIS hotspot / fire and burned area",
        "originator": "NASA LANCE",
        "spatialDomain": null
    },
...
]

(spatialDomain にはバウンディング ボックス座標が含まれる場合があり、文字列内のコンマ区切りの小数のみ)

私の古い Web サービスは、ラベルが異なるいくつかのキーで同じものを返します。新しいサービスを使用すると、このすべてのデータをサイトに投稿するコールバックに到達しません。それは間違いなく私に戻ってきて、私がそれを見ても有効に見えます。

新しいサービスには何か問題があると思いたいのですが、リクエスト URL を古い URL に戻すだけで、クライアントは問題なく動作します。ただし、応答は有効な JSON として返されるため、成功のコールバックに入るだけで問題が発生する方法を理解できません。考え?

4

1 に答える 1

2

jQuery はJSONP Web サービスを予期しているようですが、サーバーは JSONP コールバックを正しく呼び出していません。

getJSON 呼び出しを投稿します。また、クロスドメインかどうかを確認できるように、getJSON と Web サービスを呼び出すページのドメインを投稿していただけますか (必要に応じてそれらをマスクしてください)。

編集:同じサーバー上の異なるポートはクロスドメインと見なされるため、クロスオリジンである必要があるようです。つまり、JSONP を使用したいということです。問題は、新しいサービスが JSONP を正しく提供していないようです (おそらく JSON を提供しています)。古いものと新しいものの構成の違いを確認する必要があります。

于 2012-05-24T19:37:12.350 に答える