2012-03-22 10 views
6

jQueryの成功関数から、サーバーからデータを取得した後に、URLを取得したいと考えています。残念ながら、成功関数は、元のURLを公開していないかかる三つのパラメータ:jQuery:成功関数でURLを取得

success: function(data, statusText, jqhxr)

私はjqhxr変数をダンプし、そこにURLを見つけることができませんでした。私はURLを必要とする理由は、ループを通して複数の呼び出しを同時に行っているためです。したがって、Ajax呼び出しが戻ってくるかどうかわかりません。それを非同期呼び出しにすることも役に立ちませんでした。

ありがとうございます!

+1

ここで間違ったルート(ここではすべてのAjaxの戻り値を処理する1つの関数)が使用されているような気がしますが、サーバーから返されるJSONのページ名を含めることはできませんでしたか? – AndrewR

+1

"this"変数をダンプできますか? – FreeCandies

+0

+1 console.log(this); +1コメント – Relic

答えて

14

this.urlが動作します.ajax()に渡す設定オブジェクトの一部です。このオブジェクトはurlプロパティにアクセスします。

js scope.ajax()を説明する記事を参照してください。

1

あなたはそれを同期呼出しが助けにならなかったことを意味します...?

と私の提案は、あなたがAJAX呼び出しの束をループしている場合に、何をするべきかを決定するために戻ってくるデータにパラメータを設定することです。しかし実際には、複数のコールを繰り返す必要があります。適切な処理を行っている場合は、データとともに十分なパラメータを送信して、すべてのコールを1回のコールで戻すことができます。これにより、クライアントとサーバの間の数トリップが減少し、サーバーとデータベース、そしてサーバーをクライアントに戻す。

1

おそらく、ajax呼び出しを行うときにコンテキストを使用できます。

$.ajax({ 
    url: "test1.html", 
    context: $("#call1") 
}); 

$.ajax({ 
    url: "test2.html", 
    context: $("#call2") 
}); 

<div id="call1" class="hidden" data-url="whatever1"></div> 
<div id="call2" class="hidden" data-url="whatever2"></div> 

その後、

success: function(data, statusText, jqhxr) { 
    var url = $(this).data("url"); 
} 

そのようにあなたが任意のデータだけでなく、URLを取得することができます。アクセスしたいデータを、対応するdiv要素に入れます。

1

jQuery .ajax()または.post()または.get()を使用してサーバースクリプトを呼び出す場合は、ループを使用していても成功コールバック関数でurlを使用できる必要があります。これは、これら3つのメソッドのすべてにURLを渡さなければならないためです。返される結果は、渡すURLに固有のものです。例えば

:私が正しくあなたを理解していないのですがない限りthisは機能の現在のコンテキストを参照し、成功機能するのでので

for(var i=0; i<10; i++) { 
    url = "action_remote_" + i + ".php"; 
    $.ajax({ 
     type:'POST', 
     url: url, 
     data:$('#' + str_form_id).serialize(), 
     success: function(response) { 
      alert(url); 
     } 
    }); 
} 

...成功関数内

関連する問題