2

このコードを使用して、 http://openkeyval.org/経由で ajax データを保存および取得します。

 $.ajax({    /*   send data    */
        url: "http://api.openkeyval.org/store/",
        data: "test-key-data=" + JSON.stringify([123,456]),
        dataType: "jsonp",
        success: function(data){
            console.log(data);
        }
 }); 

$.ajax({     /*   retrieve data     */
        url: "http://api.openkeyval.org/test-key-data",
        dataType: "jsonp",
        success: function(data){
            console.log(data);
        }
 }); 

Chrome JavaScriptコンソールではすべて正常に動作しますが、ユーザースクリプトでは次のようなエラーが発生します

Uncaught ReferenceError: jQuery110208458673823624849_1375932537303 が定義されていません

GM_xmlhttpRequestを使用して、このようなデータを取得しようとしています

GM_xmlhttpRequest({
    method: "GET",
    url: "http://api.openkeyval.org/test-key-data",
    onload: function(response) {
        console.log(response.responseText);
    }
});

しかし、openkeyval は POST/GET メソッド経由でデータを受け入れないようで、ログ結果は、このようにブラウザの URL から直接アクセスした場合のようでした

{"error":"not_found","documentation_url":"http://openkeyval.org/"}

私はjQueryを含め、このコードでうまく動作します
// @require http://code.jquery.com/jquery-latest.min.js

このように他のコードを変更せずにGreasemonkey / jQuery XHRブリッジを使用しようとしています
// @require http://courses.ischool.berkeley.edu/i290-4/f09/resources/gm_jq_xhr.js

そして、このようなコードでopenkeyval公式javascriptライブラリ
// @require http://cdn.openkeyval.org/statics/openkeyval.packed.js
を使用し、このようなコードでデータを取得してみてください

var ourCallback = function(value, key) {
  console('The value of ' + key ' + is ' + value);
};
window.remoteStorage.getItem('test-key-data', ourCallback);

まだエラーが発生しましたERROR: Unexpected string

助けてください、私はそれを10時間以上いじっています。
どうもありがとう。

4

3 に答える 3

3

$.ajax常にエラー イベント関数をトリガーするように見えます
GM_xmlhttpRequest、ミスタイプ データを取得できるので、検索し
てみると、jsonp ヘッダーのコンテンツ タイプがORであり、最初のものがうまく機能することがわかりました。dataType: "jsonp"GM_xmlhttpRequest"application/javascript""application/json"

データを取得するための私の新しいコードは次のようになります

GM_xmlhttpRequest({
    method: "GET",
    url: "http://api.openkeyval.org/test-key-data?nocache=" + new Date(),
    headers: {  
         "Content-Type": "application/javascript"
    },
    onload: function(response) {
        console.log(response.responseText);
    }
});

常にエラーイベント関数をトリガーしてもデータを取得します$.ajaxが、それでもデータを送信します。
content-type の両方をオンにしてみましたがGM_xmlhttpRequest、まだ機能しません。

データを保存する私のコードは次のようになります

$.ajax({    /*   send data    */
        url: "http://api.openkeyval.org/store/",
        data: "test-key-data=" + JSON.stringify(myVarObject),
        dataType: "jsonp"
 }); 
于 2013-08-09T01:55:10.527 に答える
0

これを $.ajax({...}) に追加します

crossDomain: true;

これは、デフォルトでクロス ドメイン機能が無効になっているためです。http://api.jquery.com/jQuery.ajax/を参照してください。

編集:

ローカル スクリプトとリモート スクリプトで文字セットが異なるという問題が発生することがあります。使用してみてください:

scriptCharset: "utf-8";

また、JQuery AJAX が UTF-8 をサーバーに送信していないことも確認してください。IE のみです。

于 2013-08-08T04:19:12.253 に答える