0

そこで、最新の X 記事を含む JSON ファイルを生成する WordPress プラグインを作成しました。このファイルは、CloudFront でキャッシュされている URL からアクセスできます。

だから、私は(ブラウザで)次のようにファイルにアクセスします:http://mm.site.com/wp-content/uploads/plug/plug.json

そして、JSON 形式の応答ファイルを取得します。

{"id":55142,"title":"Un nuevo modelo productivo para Espa\u00f1a","url": ....

これは、非同期モードでファイルにアクセスするために使用する js コードです。

var jqXHR = $.ajax({
    type: 'GET',
    url: 'http://mm.site.com/wp-content/uploads/plug/plug.json',
    contentType: "application/json",
    dataType: 'jsonp'
});

jqXHR.done(function(json) {
       console.log(json);
    })
    .error(function(e) {
       console.log(e);
    })
    .always(function(test) {
        console.log(test);
    });

ここで興味深いのは、[ネットワーク] タブ (Firebug または Chrome 開発ツール) の下にリクエストが表示され200 Status Code、最終的には とファイルの内容が表示されること.done()ですが、.アクセスして操作することはできません。

なぜそれが考えられるのでしょうか?

アップデート

jsonの代わりにjsonp、 のためにそれをしませんcross-origin control。Amazon の CloudFront からファイルをサーバーすることを思い出してください。私はそれを修正しようとしましたが、運が悪かったので、別のオプションがない限り、使用するしかありませんjsonp

4

1 に答える 1

1

編集: @Felix Kling が指摘doneしているように、関数をコールバックとして登録します。メインのコールバックは、次のような jQuery ハンドラです。

?callback=jQuery19104353667694941068_1372008424415&foo=bar

jQueryハンドラ名が動的に生成されるため、静的ファイルはこの呼び出しに適切に応答できません。

jsonpCallback: "fixedName"静的ファイルが形式の場合、設定は機能しますfixedName({ .. some variable ..})


元の応答:

jsonpdoneメソッドを起動しません。script次のようなタグを追加します。

<script type="text/javascript" src="http://anothersite.com/?callback=whatToDoWhenDone"></script>

期待される応答は、呼び出す JS コードとwhatToDoWhenDone引数としての JSON オブジェクトです。

whatToDoWhenDone({"id":55142,"title":"Un nuevo modelo productivo para Espa\u00f1a","url": .... });

を使用する必要がない場合はjsonp、 に変更してjsonください。

于 2013-06-23T05:24:20.663 に答える