1

JSON形式の文字列の配列であるサーバーからファイルを取得するためにajaxを使用しています。以下のように ajax リクエストを実行すると、jQuery は自動的に JSON 文字列を配列に解析します。

$.ajax({
    url: "modules.php",
    success: function (data) {
                //data is an array object not text
            }
    });

ただし、文字列のみを保存できる localStorage にデータを保存したいと思います。配列 (データ) を文字列に変換するのではなく、jQuery が JSON 文字列を自動的に解析するのを停止し、テキストを保存してから、JSON を自分で解析します。もっと好き:

$.ajax({
    url: "modules.php",
    success: function (data) {
                //jQuery hasn't parsed the JSON already, and data is a string.
                localStorage.setItem("modules", data);
                var parsedData = $.parseJSON(data);
                //use the array
            }
    });
4

4 に答える 4

8

ドキュメントによると

success: function (data, textStatus, jqXHR)

XHRオブジェクトには応答テキストが含まれています。

jqXHR.responseText
于 2012-09-04T20:22:24.800 に答える
5

dataType次の属性を使用して、jQueryMIMEタイプの検証をバイパスする必要があります。

$.ajax({
    url: "modules.php",
    success: function (data) {
        //data is an array object not text
    },
    dataType: "html"
});
于 2012-09-04T20:23:07.447 に答える
1

dataTypeドキュメントによると、ajax 呼び出しでno が指定されている場合、「jQuery は応答の MIME タイプに基づいて [データ型] を推測しようとします」 。

呼び出しごとに、dataTypeAsKaiser で示されているように呼び出し本文に を追加できます (ただし、text代わりにを使用しますhtml)。すべての ajax 呼び出しに対して常にプレーン テキストを返したい場合は、jQuery の$.ajaxSetup().

于 2012-09-04T20:30:08.613 に答える
0

JQuery を使用しないでください。このリクエストにはプレーンな JavaScript を使用できます。http://www.w3schools.com/ajaxを試しましたか? リクエストとレスポンスを参照してください。少し多くのコードを使用しますが、より高速になり、応答が直接得られます。ここに私が書いたラッパーがあります:

function AJAX(url, success, async) {
    if (window.XMLHttpRequest) {
        var request = new XMLHttpRequest;
    } else {
        // IE6 and IE5 (unnecessary)
        var request = new ActiveXObject("Microsoft.XMLHttp");
    }
    if (async) request.onReadyStateChange = function() {
        if (request.readyState == 4) {
            success(request.status, request.responseText);
        }
    };
    request.open("GET", url, async);
    request.send();
    if (!async) success(request.status, request.responseText);
}

この関数は、URL を文字列、success 関数を受け入れる関数、(status code, response string)非同期かどうかをブール値として受け取ります。

于 2015-08-13T13:32:18.980 に答える