2013-04-27 45 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