2011-02-10 5 views
2

私はv1.4.4からv1.5にアップグレードしました。私はAjaxのリクエストのための放火魔に見て、を追加しているようだv1.5にアップグレードするときのJavery ajaxエラー

function update_csrf_token() 
{ 
    $.ajax({ 
     type: "GET", 
     url: "<?php echo site_url('includes/csrf_token/'); ?>", 
     dataType: "json", 
     jsonp: false, 
     jsonpCallback: "callbackName", 
     success: function(data) { 
      csrf_token = data.csrf_token; 
      return data.csrf_token; 
     } 
    }); 
} 

EDITED

$(document).ready(function(){ 

    // Get token on page load. 
    update_csrf_token(); 
関数は次のようになります

以下の問題... を発見したと思いますか?_ = 1297353567948をURLの末尾に追加すると、csrfトークンは生成されません。 どうすればこの問題を取り除くことができますか、1.5には何か新しいことができますか? ありがとう

+0

私は成功関数から値を返すことはわかりません。 –

+0

そのdev thats理由:P – Wong

答えて

5

jQuery 1.5は自動的にランダムなコールバックパラメータを追加しますが、jsonpjsonpCallbackのjQuery ajax設定を設定することでオーバーライドできます。 jQuery Ajax APIから

: "?コールバック" はjQuery 1.5のよう

、falseにJSONPオプションを設定するには、 URLに文字列を追加したり、使用しようとするからjQueryのを防ぎます "=の?"変換のために。この場合、 も明示的にjsonpCallback設定を設定する必要があります。たとえば、 { jsonp: false, jsonpCallback: "callbackName" }です。

アンダースコアパラメータ(?_=...)は、常にブラウザが前に見たことのないものを見えるようにリクエストURLを作成し、実際のHTTPリクエストを強制するように変更したタイムスタンプを含むパラメータです。パラメータは、.ajax()コール(またはグローバル設定によってcache: true設定を追加することにより、キャッシュを有効にすることで削除できます。jQuery.ajaxSetup({cache:true});設定のデフォルトtrueにいるdataType scriptjsonp

+0

返信いただきありがとうございます。私はページを読んで、上の私のポストのように編集しました。しかし、運が分かると、コールバック文字列は小さくなり、?_ = 1297353567948のようになります。何か案は? – Wong

+0

編集された回答は残りの問題を修正するはずです。キャッシュはjQuery 1.5の前にすでに存在していたので、なぜこの問題が今まで現れなかったのか分かりません。 – Jawa

2

、例えば(あなたのコードとプラグインを確認してくださいデフォルトのオプションとして$ .ajaxSettingsを使用して、古い検証プラグイン、 次のようになりコード削除します。

012:あなたができないか、追加しようとすることをしたくない場合は

var settings = $.extend({}, $.ajaxSettings, settings); 

を設定します。

$.ajax({ 
     type: "GET", 
     url: "<?php echo site_url('includes/csrf_token/'); ?>", 
     dataType: "json", 
     jsonp: null, 
     jsonpCallback: null, 
     success: function(data) { 
      csrf_token = data.csrf_token; 
      return data.csrf_token; 
     } 
    }); 

それとも、JSONPコールバックを防止するためにデフォルト設定を設定するには)$ ajaxSetupを(使用することができます:あなたのコードがあるべきように、詳細な情報については

$ajaxSetup({ jsonp: null, jsonpCallback: null }); 

を、Ticket #8084を参照してください。

注:公式のjQueryプラグインセンター(http://plugins.jquery.com/project/validate)の検証プラグインのドキュメントは古くなっています(本当にバグです)。検証プラグインのバージョン1.5.5のみをカバーしています。最新のリリースについては、ホームページ:jQuery plugin: Validationを参照してください。

1

cache:falseの新しいバージョンで

これ以上の問題は、(カンマを忘れないでください)とそのパラメータが追加取得を停止します。それはJSONP関連していた場合は、何かがのように追加見るでしょう:

コールバック= jQuery171003826577159490807_1332979269727

しかし、_ =タイムスタンプはjQueryの任意のクライアントを防ぐためにしようとしている兆候があるように見えます?リクエストのサイドキャッシュ。

関連する問題