0

ブートストラップ タイプヘッドをセットアップしようとしています。これが私の jquery コードです

    $(function () {
    $.ajax({
        type: "GET",
        url: "http://example.com/search?callback=my_callback",
        data: { keyword: 'r' },
        jsonpCallback: "my_callback",
        dataType: "jsonp",
        error: function (xhr, errorType, exception) {
            var errorMessage = exception || xhr.statusText;
            alert("Excep:: " + exception + "Status:: " + xhr.statusText);
        }
    });

    var sources = [
      { name: "local", type: "localStorage", key: "cities", display: "country" },
      { name: "remote", type: "remote", url: "/cities/list" },
      { name: "data", type: "data", data: [] }
    ];

    $('input.typeahead.local.remote').typeahead({
        sources: [
        { name: "local", type: "localStorage", key: "cities" }
      ]
    });
});

function my_callback(data) {
    alert(data.count);
    var src2 = '[';
    var i;
    for (i = 0; i < data.count; i++) {
        src2 = src2 + "{ id : " + (i + 1) + " , name: '" + data.response[i].name + "' },";

    }
    src2 = src2.substring(0, src2.length - 1);
    src2 = src2 + ']';
    var sampleJson = [{ id: 1, name: 'Really Awesome' }, { id: 2, name: 'RSpecge'}];
    localStorage.setItem("cities", JSON.stringify(src2));
}

localStoragejquery ajax呼び出しから返されたデータを使用して設定したコールバック関数では機能しませんが、変数を使用してデータを直接設定しようとすると機能しsampleJson ます。Yそうですか??

これは、sampleJson と同じように見える jquery ajax からの応答から動的に作成された json です。

[{ id: 1, name: 'Really Awesome' }, { id: 2, name: 'RSpecge'}]

そして、ここにsampleJsonがあります

var sampleJson = [{ id: 1, name: 'Really Awesome' }, { id: 2, name: 'RSpecge'}];
4

1 に答える 1

1

「うまくいかない」ことを明確にできますか?データを手動で JSON 文字列にシリアル化しようとするのは不要であり、エラーが発生しやすくなります。データを通常の JavaScript オブジェクトとして操作JSON.stringifyし、準備ができたら文字列に変換します。実際の JSON が生成されます。たとえば、すべてのキーを二重引用符で囲む必要がありますが、コードでは、ほとんどのキーを引用符で囲まないことを許可する JavaScript オブジェクト リテラル構文が生成されます。

于 2013-01-11T06:57:06.133 に答える