我使用Prototype.js来验证表单。对于其中一个字段,我有原型脚本ajax对文件的请求。该文件是一个简单的PHP文件,如果值为OK则返回“1”,如果值不正确则返回“0”。我有如下脚本,它应该完美。当字段未通过验证时,原型验证应显示验证错误消息,并且在字段通过验证后不显示/删除消息。但在这种情况下,即使ajax文件返回'1',验证仍会显示错误消息。任何能够提供帮助的人都将不胜感激!
['validate-number3', numessage3, function(v) {
new Ajax.Request('test.php?nr='+v, {
method:'get',
onSuccess: function(transport) {
var response = transport.responseText;
if(response == '1'){return true;}else{return false};
}
});
}],
答案 0 :(得分:0)
来自Ajax.Request
的返回值是Ajax.Request
对象,并在设置请求后立即返回 - 在请求完成后调用onsuccess
回调 - 因此检查结果Ajax.Request对你想要完成的事情没有用。
这不能按预期工作的原因,这是一个异步调用,这意味着它将启动调用,然后在处理时将控制权返回给脚本,然后在完成后运行回调。
以这种方式试试
new Ajax.Request('test.php?nr='+v, {
method:'get',
onSuccess: handleResponse
});
function handleResponse( transport ){
var response = transport.responseText;
if(response == '1'){
//everything is OK
}else{
//value is not OK
};
}
答案 1 :(得分:0)
我能够解决我的问题! 感谢这个teriffic页面:http://inchoo.net/ecommerce/magento/magento-frontend/magento-form-field-ajax-validation/没问题。这就是我最终的结果:
var ok = false;
new Ajax.Request('test.php?nr='+v, {
method:'get',
asynchronous: false,
onSuccess: function(transport) {
var response = transport.responseText;
if(response == '1'){ok = true;}else{ok = false;};
},
onComplete: function() {
if ($('advice-validate-number-pay_bank_no')) {
$('advice-validate-number-pay_bank_no').remove();
}
}
});
return ok;