web-dev-qa-db-ja.com

AJAX JSONP呼び出しは自動的にコールバックパラメータを追加します。それを削除するにはどうすればよいですか?

クリーンURLのサービスがほとんどありません

各サービスの呼び出し中に、URLパターンがチェックされます。

現在、JSONP手法を使用して、別のサーバーからAJAXを介してこれらのURLを呼び出しています。

ただし、呼び出し中に、サービスURLを使用してcallbackおよび_(timestamp)パラメーターを自動的に追加します。

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

これが私のAJAX呼び出しコード-

_$.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);
            }
        });
});
_

URLを_http://test.com/test/services/getFollowMeHistory/1/1/50?callback=false_と呼び、サービス側から404を取得しています。

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

URLから_?callback=..._の部分を削除する必要があります

Plzヘルプ。

11

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

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

14
lanzz
  1. キャッシュをtrueに設定すると、つまりリクエストレスポンスがキャッシュされ、後続のすべてのJSONP呼び出しは新しいデータを返しません。

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

  3. サーバーは、JSONPリクエストを処理するように設定する必要があります。送信するURLはクライアント側には影響しません。したがって、問題はサーバー側にある必要があります。あなたがそれを扱うべき場所です。これをjQueryの問題ではありません。

カスタムコールバックを使用している場合これを試してください。ただし、カスタムコールバックは、コールバックを削除することと同じではありません。

 jsonpCallback : "callbackMethod"
2
Fresheyeball