0

私はajax呼び出しを行うためにjqueryを使用しています:

    // omitting the code for the options properties

    var options = {
        type: Type,
        url: Url,
        data: '{aString:"abc"}',
        contentType: ContentType,
        dataType: dataType,
        //processdata: ProcessData,
        success: function (msg) {
            ServiceSucceeded(msg);
        },
        error: ServiceFailed

    };
    function ServiceFailed(result) {
        alert('Service call failed: ' + result.status + '' + result.statusText);
    }

    $.ajax(options).done(function () {
      alert("success: " + msg);
    });

この呼び出しは、オプションで定義された URL が呼び出されるという点で機能します。エンドポイントは私がホストする wcf サービスであるため、期待どおりに呼び出されることを確認しました。

フィドラーで呼び出しを監視していますが、リクエストやレスポンスに問題はありません。http 応答コードは 200 OK です。

しかし、done の関数は呼び出されません。代わりに ServiceFailed が実行されます。どうしてこれなの?done() が呼び出されない理由と jquery consi が呼び出される理由

4

3 に答える 3

3

あなたが投稿したものに基づいて推測することしかできません。

to jQueryを指定していますdataType(ただし、そのデータ型が何であるかは教えていません)。これは、(潜在的に) 結果を変換するように指示していることを意味します。たとえば、dataType変数が「json」の場合、jQuery は結果を JSON に変換しようとします。「xml」の場合、jQuery は結果を XML に変換しようとします。

呼び出しが行われるのを見ていて、コンテンツを含む 200 応答が表示されている場合は、失敗したのはデータ変換であることを示唆しています。

エラーが発生した理由を簡単に調べることができます。関数は次のerrorシグネチャで呼び出されます。

function error(jqXHR, textStatus, errorThrown)

...したがって、その中にブレークポイントを配置して検査することができますtextStatus(結果の監視に基づいて 200 にする必要errorThrownがありますが、そうでない場合は有用な情報です) 。これにより、何が問題なのかがわかります。

于 2012-11-26T09:00:36.660 に答える
0

Url がリモートの場合は、JSONP を使用する必要があります。これには、Url にクエリ文字列を追加する必要があります。?callback?

jQuery ajaxはローカルファイルで動作していますが、リモートURLからは動作していませんか?

于 2012-11-26T09:03:40.343 に答える
0

あなたはdataTypeを指定していません....サーバーからの応答で期待されるものとして.... jQueryは応答データを処理し、それを最初の引数として成功コールバック関数に渡します(提供されている場合)。$.ajax に渡される唯一の引数で、dataType をキーと値のペアとして指定できます。サポートされているタイプは次のとおりです。

"xml": Treat the response as an XML document that can be processed via jQuery.
"html": Treat the response as HTML (plain text); included script tags are evaluated.
"script": Evaluates the response as JavaScript and evaluates it.
"json": Evaluates the response as JSON and sends a JavaScript Object to the success callback.

このページをチェックしてください

http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

于 2012-11-26T09:04:34.317 に答える