2013-04-27 42 views
0

我正在嘗試實現一些Ajax,並遇到了如何處理響應以及如何正確處理數據的問題。MVC Ajax句柄響應正確

我的JavaScript代碼是:

$(function() { 
    $('#creatediaryentry').submit(function() { 
     if ($(this).valid()) { 
      $.ajax({ 
       url: this.action, 
       type: this.method, 
       dataType: "json", 
       data: $(this).serialize(), 
       success: function (result) { 
        $('#diary-entries-list').append("<li>" + result + "</li>"); 
       } 
      }); 
     } 
     return false; 
    }); 
}); 

這需要一個簡單的表格數據並將其發佈按預期到控制器方法:

public JsonResult PostNewEntry(EntryViewModel entry) 
    { 
     var entryDc = Mapper.Map<EntryViewModel, EntryDc>(entry); 

     try 
     { 
      //_apiClient.SubmitNewEntry(entryDc); 
     } 
     catch (ApiClientException ex) 
     { 
      Console.WriteLine(ex); 
     } 

     return Json(JsonResponseFactory.SuccessResponse()); 
    } 

請告訴我的時刻發生的是該響應被加載到一個只有SuccessResponse內容的空白頁面 - {"Success":true}

我最想做的就是抓住用戶在UI中輸入的文本並用客戶端數據更新<li>,而不從控制器發回。

回答

1

嘗試阻止默認的提交行爲。你可以使用preventDefault這樣做。

$(function(){ 
    $('#creatediaryentry').submit(function (e) { 
    e.preventDefault(); 

     //your other ajax posting code goes here 

    }); 
}); 
+0

這似乎已經做到了。可以使用Ajax調用中的哪個變量來引用表單? – Jammer 2013-04-27 23:38:47

+0

@Jammer你可以通過選擇它的ID來引用表單。 – Shyju 2013-04-28 00:30:35

+0

事實上,我發佈後立即去了(杜!),它的工作原理:$('#newdiaryentry')。val() – Jammer 2013-04-28 17:48:28