我正在使用Ajax和Prototype库。
这是我调用Ajax函数的函数。
function Testfn()
{
var DateExists = '';
new Ajax.Request('testurl',{
method: 'post',
parameters: {param1:"A", param2:"B", param3:"C"},
onSuccess: function(response){
//DateExists = response.responseText;
DateExists = 1;
}
});
// I want to access the value set in the onsuccess function here
alert(DateExists);
}
当我提醒DateExists值时,我得到空值而不是我的Ajax调用的onsuccess函数中设置的值,这是怎么回事?
感谢您的帮助。
答案 0 :(得分:3)
AJAX中的A代表异步。这意味着只要您使用new Ajax.Request
分派该Ajax请求,请求就会发送到服务器并立即将控制权返回给您的脚本。因此,alert(DateExists)将显示“您最初设置的内容。”
要从AJAX请求返回后查看DateExists的值,必须在onSuccess()方法中移动它。
示例:
function Testfn() {
var DateExists = '';
new Ajax.Request('testurl', {
method: 'post',
parameters: {param1:"A", param2:"B", param3:"C"},
onSuccess: function(response){
DateExists = response.responseText;
alert(DateExists);
}
});
}
答案 1 :(得分:1)
当 A JAX请求结束时异步执行onSuccess回调,因此警告在调用回调之前触发。
您应该在回调中使用您的回复,或者如果您愿意,还可以创建另一个功能:
new Ajax.Request('testurl',{
method: 'post',
parameters: {param1:"A", param2:"B", param3:"C"},
onSuccess: function(response){
var dateExists = response.responseText;
doWork(dateExists);
// or alert(dateExists);
}
});
function doWork (data) {
alert(data);
}
答案 2 :(得分:0)
CMS完全正确。解决方案是调用需要从AJAX回调中访问DateExists的javascript,如下所示:
function Testfn()
{
var DateExists = '';
new Ajax.Request('testurl',{
method: 'post',
parameters: {param1:"A", param2:"B", param3:"C"},
onSuccess: function(response){
//DateExists = response.responseText;
DateExists = 1;
doTheRestOfMyStuff(DateExists);
}
});
// I want to access the value set in the onsuccess function here
function doTheRestOfMyStuff(DateExists)
{
alert(DateExists);
}
}