0

我使用 Prototype.js 来验证表单。对于其中一个字段,我有原型脚本 ajax 对文件的请求。该文件是一个简单的 PHP 文件,如果值正常则返回“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};
  }
});
}],
4

2 回答 2

0

我能够解决我的问题!感谢这个极好的页面: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;
于 2013-09-18T01:44:44.263 回答
0

from 的返回值Ajax.RequestAjax.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 
    };
}
于 2013-09-17T19:47:30.873 回答