0
var req = $.ajax({
            type: 'GET',
            cache: false,
            url: 'loc.aspx?count=' + str,
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            async: false,
            data:'{}',
            success: function (data) {
                alert(data.responseText);
            }
        });
        req.fail(function (data) {
        TINY.box.show({ html: 'Server Error. Try again: ' + data.responseText, animate: false, close: false, boxid: 'error', top: 100 });
        });

上記のコードはjspで正しく機能していましたが、現在はasp.net c#で使用しようとしています。いずれにしても、成功ブロックで必要なエラーブロックで正しいデータを取得しています。役に立たdata.dない、

alert(data)完全なhtmlを取得しているようなものを書く場合、応答テキストだけが必要です。このように使用するとdata.responseText、未定義になります。誰かがplsを助けます。

ありがとう

4

1 に答える 1

0

以下のコードは正常に機能するはずです。私はあなたが間違いをしているところにいくつかのコメントを追加しました

var req = $.ajax({
            type: 'GET',
            cache: false,
            url: 'loc.aspx?count=' + str,
            dataType: 'html',// as you return a simple html dataType:json will throw an error as jquery will not be able to parse received string
            contentType: "application/json; charset=utf-8",
            async: false,
            data:'{}',
            success: function (data) {
                alert(data);// data is not an XHR object. it is a processed response. In your case - simple string with HTML which, of course, has no method responseText
            }
        });
        req.fail(function (data) {
        TINY.box.show({ html: 'Server Error. Try again: ' + data.responseText, animate: false, close: false, boxid: 'error', top: 100 });
        });

この.fail場合data.responseText、XHRオブジェクトが最初のパラメーターとして渡されるためです(これを参照)。同時に、successコールバックの最初のパラメーターは、リクエストで受信されたクリーンなデータです。data == xhr.responseText詳細がない場合は、成功したコールバックでそれを考えることができます。このセクションの成功プロパティの説明を参照してください

upd

明らかに、問題はJSだけにあるのではありません。私はあなたが.aspxajaxで呼ばれる単純なページを持っていると思います。2つの解決策があります:

1)代わりにWebサービスを使用してください。完全なページの読み込みサイクルを経ず、より速く実行する必要があるため、より良いでしょう。また、未使用のHTMLは生成されません

2)aspxページはデフォルトでいくつかのHTMLを出力します。ajaxリクエストのレスポンスを返す前に、レスポンスをクリアし(すでに生成されたHTMLがサーバーに送信されないようにするため)、レスポンスを書き込んですぐに終了する必要があります。

Response.Clear();
Response.Write("hello");
Response.End();

helloこのように、あなたは成功だけを受け取るべきです。

于 2013-01-22T09:16:55.383 に答える