URLへのjQuery ajax呼び出しがあります。成功したら、後続の呼び出しのためにこの URL を変更する必要があります。そのための設定にアクセスするにはどうすればよいですか?
$.ajax({
url: 'http://google.com',
success: function (data, textStatus, jqXHR) {
//set url here to http://yahoo.com
}
var count = 0;
function getUrl()
{
count++;
if ( count == 1 )
return 'http://google.com';
else
return 'http://yahoo.com';
}
$.ajax({
url: getUrl(),
success: function (data, textStatus, jqXHR) {
}
});
わかりました-わかりました。私の問題は、送信時に呼び出しがフォームにラップされ、この呼び出し内の URL を更新しても機能しないことでした。ただし、URL を呼び出しの外に移動すると、コールバックから URL を更新できます。
これは動作しません:
$("#form").bind("submit", function(evt) {
var url = "http://myurl";
$.ajax({
url: url,
type: "PUT",
contentType: "application/json",
dataType: "json",
data: data,
success: function (data, textStatus, jqXHR) {
url = "http://newurl"
},
error: function (jqXHR, textStatus, errorThrown) { }
});
return false;
});
しかし、これは:
var url = "http://myurl";
$("#form").bind("submit", function(evt) {
$.ajax({
url: url,
type: "PUT",
contentType: "application/json",
dataType: "json",
data: data,
success: function (data, textStatus, jqXHR) {
url = "http://newurl"
},
error: function (jqXHR, textStatus, errorThrown) { }
});
return false;
});
var customUrl = 'http://google.com'
$.ajax({
url: customUrl ,
success: function (data, textStatus, jqXHR) {
//set url here to http://yahoo.com
customUrl = 'http://yahoo.com'
use your customUrl variable later
}
});
Ajax は非同期です。そのため、後でその URL を使用する場合は、成功のコールバック関数で使用することをお勧めします...
ajax リクエストの直後に使用している場合、アクセスしようとしたときにまだ ajax リクエストが完了しておらず、変数が更新されていない可能性があります。