2010-03-03 96 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數組向客戶端發送更多的數據,但在這種情況下就足夠了。希望這有幫助,請讓我知道更好的解決方案。