2012-06-08 7 views
8

クリーンなURLを持つサービスはほとんどありません。AJAX JSONPは自動的にコールバックパラメータを追加して呼び出します。それを取り除くには?

各サービスを呼び出しているうちに、URLパターンがチェックされています。

JSONP技術を使用して別のサーバーからAJAX経由でURLを呼び出しています。

しかし、呼び出し時には、サービスURLにcallback_(timestamp)のパラメータを自動的に追加します。

タイムスタンプパラメータは、cache : trueを追加することで削除されます。しかし、コールバックパラメータを削除することはできません。

は、ここに私のAJAXは、そのがhttp://test.com/test/services/getFollowMeHistory/1/1/50?callback=falseしたままのURLを呼び出し、サービス側から404を取得しています

$.ajax({ 
     type: 'GET', 
     url : "http://test.com/test/services/getFollowMeHistory/1/1/50", 
     dataType:'jsonp', 
     cache : true, 
     crossDomain : true, 
     //jsonpCallback : false, 

     error : function(XMLHttpRequest, textStatus, errorThrown) { 
      alert("Error occured while loading Loads."+textStatus); 
      } 
     }); 
}); 

コード -

を呼び出すです。

私のサービスは、callbackMethod({..JSON RESPONSE ...})というデータを返しています。それで、私のスクリプトの中で自動的にfunction callbackMethod(data)が呼び出されます。私は自分のURLにそのコールバックパラメータは必要ありません。

ちょうどURL

Plzをヘルプから?callback=...一部を削除する必要があります。

+0

それはJSONPだが、それはJSONPがあるものです。 –

+0

callbackパラメータは、どのコールバックがデータとともに返されるかをサーバに通知します。 –

+0

サービス側から - jsonを "callbackMethod({... json response ..})"に戻しています。したがって、自動的に "function callbackMethod(data)"をスクリプト内で呼び出します。 –

答えて

10

jsonp: falseではなく、jsonpCallback: falseと設定する必要があります。 jsonpCallbackオプションをサービスから受信する予定のコールバック名に明示的に設定する必要があります。

参考:http://api.jquery.com/jQuery.ajax/

+0

私はそれをテストしておらず、ドキュメントを読んでいるだけですが、明らかに 'jsonp:false'で、jQueryは'callback'パラメータを返しますが、依然としてJSONP応答を期待します。そのため、サーバーから期待されるものに応じて、作成するコールバック関数の名前を明示的に示す 'jsonpCallback'パラメータが必要です。 – lanzz

+0

ありがとうございますが、真のクロスドメインコール –

+0

+1です。コールバックパラメータを使用したくない場合は、これは間違いありません。 –

1
  1. あなたはtrueすなわちにcacheingを設定した場合 要求応答をキャッシュし、後続のすべてのJSONP呼び出しが新しい データを返しません。

  2. 応答を読み取る方法がないため、JSONPは使用できません。 コールバックはJSONPの全ポイントです。

  3. サーバーがJSONP要求を処理するように設定されている必要があります。送信するURLはクライアント側には影響しません。だからあなたの問題はサーバー側でなければなりません。それはあなたがそれを扱うべき場所です。これをjQueryの問題にしないでください。

カスタムコールバックはこれを試してみてください使用しているが、カスタムコールバックがコールバックを削除するのと同じでない場合:

jsonpCallback : "callbackMethod" 
+0

サービス側から - jsonを "callbackMethod({... json response ..})"に戻しています。したがって、自動的に "function callbackMethod(data)"をスクリプト内で呼び出します。そのコールバックパラメータは必要ありません。 –

+0

私は自分の答えを更新しました。 – Fresheyeball

関連する問題