2010-03-03 63 views
1

我想发送一个表单与mootools和取决于从PHP脚本的响应做这样或那样的事情。问题是我无法在代码的onComplete部分中使用条件语句。Mootools Ajax形式的响应

我想的东西可能真的很明显,请帮我:)

$('formName').addEvent('submit', function(e){ 
    e.stop();      
    var req = new Request.HTML({ 
     url  : 'phpUrl.php', 
     data  : $('formName'), 
     update : $('modify-me'), 
     onComplete: function(){ 
      $('formName').reset(); 
      if($('modify-me').get('text') = "1"){ 
       alert("succeed"); 
       }else{ 
       alert("failure"); 
       } 
      } 
    }).send();      
    }); 

这是我使用的代码PHP的响应跛脚的尝试,但当然没有奏效。 不用说,我对所有这些异步客户端 - 服务器通信都是新手,但我真的很感兴趣。

回答

3

您在if语句(single =)中进行赋值,而不是检查相等(==)。行

if($('modify-me').get('text') = "1") 

更改为

if($('modify-me').get('text') == "1") 
+0

不错,在这里+1。 但是,在使用条件语句中的值之前,没有办法不必为元素指定响应吗? 我的意思是,不应该有一种方法来区分成功和失败而不做这件丑事吗? – johnnyArt

+0

我不确定我是否理解 - 我没有使用过MooTools,但Google似乎暗示onComplete只会在响应成功完成时才会触发? – Macros

+0

成功完成并不意味着来自PHP脚本的特定响应,这是我未能实现的。我想直接使用响应的值,而不用将它添加到之前的元素。 – johnnyArt

0

对不起球员,也许我来晚了......我工作MooTools的1.2.4客户端和PHP的后端。这是我提交表单,并从服务器获得响应的方式......

$('myFormID').set('send', { 
     noCache: true, 
     onRequest: function(){ 
      // show some rotating loader gif... 
     }, 
     onComplete: function(response) { 
      // hide the loader gif... 
      objJson = JSON.decode(response); 
      if(objJson.success){ 
       // do your success stuff... 
       alert(objJson.msg); 
      } else { 
       alert(objJson.msg); 
      } 
     }, 
     onFailure: function(){ 
      alert("Request Aborted."); 
     } 
    }).send(); 

在我的情况下提交表单是由一个按钮触发的,但可能是什么...让我们来看看服务器端(我使用PHP,但任何其他语言是好的)

if($somethingWentWrong){ 
    echo json_encode(array("success" => false, "msg" => "Check your form.")); 
} else { 
    echo json_encode(array("success" => true, "msg" => "Data saved.")); 
} 

所有的服务器端的检查和验证(也许在一个MySQL batabase的更新之后)我只返回一个JSON数组(这是whay我有一个JSON.decode (响应)在客户端 - 地球上),然后只需检查“成功”键,以发现提交是否在服务器端月亮成功。我只是添加一条我在警报中显示的小消息。很明显,我可以使用JSON数组向客户端发送更多的数据,但在这种情况下就足够了。希望这有帮助,请让我知道更好的解决方案。