2012-03-23 58 views
0

如何使用AJAX提交dojo表單,如果有錯誤,在錯誤填充的字段附近打印錯誤? 我現在做這樣的事情:Zend Dojo。 Ajax提交dojo表格

dojo.ready(function() { 
    var form = dojo.byId("user_profile_form"); 
    dojo.connect(form, "onsubmit", function(event){ 
    dojo.stopEvent(event); 

    var xhrArgs = { 
     form: form, 
     handleAs: "json", 
     load: function(responseText){ 
      var result_data = zen.json.getResult(responseText); 
      dojo.byId("response").innerHTML = "Form posted."; 
     }, 
     error: function(error){ 
      // We'll 404 in the demo, but that's okay. We don't have a 'postIt' service on the 
      // docs server. 
      dojo.byId("response").innerHTML = "Form posted."; 
     } 
    } 
    // Call the asynchronous xhrPost 
    dojo.byId("response").innerHTML = "Form being sent..." 
    var deferred = dojo.xhrPost(xhrArgs); 
}); 

但我不知道如何打印錯誤

回答

1

有幾個方法可以做到這一點。我更喜歡的是訂閱IO Pipeline Topics

對於錯誤,請訂閱/dojo/io/error主題。這裏有一個例子,將Growl的錯誤。

dojo.subscribe("/dojo/io/error", function(/*dojo.Deferred*/ dfd, /*Object*/ error){ 
    // Triggered whenever an IO request has errored. 
    // It passes the error and the dojo.Deferred 
    // for the request with the topic. 

    var responseTextObject = dojo.fromJson(error.responseText) 
    var growlMessage = ''; 

    if (responseTextObject && responseTextObject.message) { 
     growlMessage += responseTextObject.message 
    } else { 
     // Don't Growl the xhr cancelled messages. 
     if (error.message == 'xhr cancelled') { 
      return; 
     } 

     growlMessage = error.message 
    } 

    new ext.Growl({ 
     message: growlMessage 
    }); 
}); 

服務器應該提供響應中的所有錯誤詳細信息。在此示例中,預期會使用JSON格式的響應,但如果未提供,則仍會顯示錯誤。

如果你想看到漂亮的無效字段的造型,把小部件在dijit.form.Form

+0

非常感謝您! – Ildar 2012-03-24 21:51:25