0

あるサーバーでホストされているWebサービスからPOSTおよびGET操作を実行するためにajax呼び出しを使用しています。

クロスドメインの問題のため、dataType:"jsonp"を使用しています。fiddlerのWebサービスによって送信されているデータを確認できます。サービスから取得したデータにアクセスしたいのですが、どうすればよいかわかりません。

これは私のajax呼び出しです:

    $.ajax({
        type: method,
        url: "url",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        jsonp: false,
        jsonpcallback:function(data){},            //What am I supposed to write here so that I can get the JSON data from Padded json
        success: successHandler,
        error: errorHandler
    });

これは、サービスから受け取るjson応答の概算です。

    {"Ideas":[
               {"Message":null,"IdeaId":1},
               {"Message":null,"IdeaId":1}
             ]
    }  

どんな種類の助けも大歓迎です。たくさんの投稿を検索しましたが、うまくいきませんでした。

前もって感謝します。

4

4 に答える 4

1

jsonpcallback:function(data){},// Padded jsonからJSONデータを取得できるように、ここに何を書き込む必要がありますか

通常、何もありません。JSONPサービスが本当に非定型である場合にのみ、コールバックを指定する必要があります。指定する場合は、文字列である必要があります。

同様にjsonp: false、コールバックパラメータが生成されないように設定しないでください。

ただし、データを処理するには成功ハンドラーが必要です。エラーハンドラを用意することもお勧めします。

function successHandler(data) {
    console.log(data)
}

function errorHandler(jqXHR, errorType, exception) {
    console.log(errorType, exception);
}

$.ajax({
    url: "url", // Make this the real URL!
    dataType: "jsonp",
    success: successHandler,
    error: errorHandler
});

次に、JSONPハンドラーは実際にJSONPを返す必要があります

Content-Typeサーバーから返されるヘッダーは次のようになりますapplication/javascript

本体は次のようになります。

  • callbackクエリ文字列のキーの値
  • (
  • 一部のJSON
  • );

例えば

jqueryCallback123u54yiyioeuioey8({ "foo": "bar" });
于 2012-11-16T22:13:14.193 に答える
0

私は優れたスクリプターではありませんが、プロジェクトにAJAXを使用しました。これを試してみてください。

$.ajax({
    type: method,
    url: "url",
    dataType: "jsonp",
    success: function(data){
        console.log(data);
    }
});
于 2012-11-16T21:51:59.913 に答える
0

コンソールを使用する必要があります。たとえば、、、またはfirebugを使用する場合。firefoxchrome's development console

そこにあなたのコードに間違いがあるはずです。

ajax()

jqueryの関数はsuccess: function(data){ // do something with the data } コールバックを取ります。

console.log(//some data) 

スクリプトのさまざまなポイントでさまざまなデータをログに記録するためのものです。

それで

$.ajax({
    type: method,
    url: "url",
    dataType: "jsonp",
    success: function(data){
    console.log(data);
}

});

そんなに悪い考えではありません。

于 2012-11-16T22:05:12.493 に答える
0

私はこれを次のように起動して実行しました:

<script type="text/javascript">

  var jsonpCallback;

  function checkDocId() {
    // AJAX request
    $.ajaxSetup({ cache: false });

    jsonpCallback = function(data) {
      $("#result").html(data.html);
    };

    $.ajax({
      type: "GET",
      url: "/secudok/ws/rest/checkdocid/jsonp/" + encodeURIComponent($("#docId").val()),
      dataType: "jsonp",
      jsonpCallback: "jsonpCallback",
      crossDomain: true
    });
  }

</script>

サーバーは、コールバック関数function({JSON})にラップされたデータを返します。

jsonpCallback({"html":"<table>data</table>\n"})

私の例ではHTMLを使用していますが、JSONでもかまいません

yourCallbackName({"a":"1"; "b":"2"})
于 2012-11-16T22:07:12.217 に答える