2011-04-28 72 views
1

我使用的是与jQuery 1.5.2的asp.net mvc2。我假装在客户端调用我的控制器中返回一个json数据的特定方法。简单的JsonResult返回jquery ajax方法的parsererror

其实,我的客户端调用服务器正在工作,但问题是,jQuery不能识别返回的json。

我不明白我做错了什么,可以有人帮助我吗?

控制器方法:

<HttpPost()> _ 
Function DoStuff(ByVal id As Integer) As JsonResult 
    Dim retval As JsonResult = Nothing 

    retval = Json(New xpto With {.P1 = "P1Value"}) 

    Return retval 
End Function 

JQuery的Ajax调用:

$.ajax({ 
     url: "/DoStuff/5", 
     type: "POST", 
     dataType: "json", 
     async: false, 
     success: function(data, textStatus, jqXHR) { 
      alert(textStatus); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert(textStatus); 
     } 
    }); 

值时处理错误的方法:

errorThrow N:jQuery1520029581770420782693_1303980789842不叫

textStatus:parsererror

jqXHR.responseText = “{” P1 “:” P1Value “}”

+0

看不出你的代码有什么问题。这是否发生在所有浏览器?我测试过这段代码,它工作正常。 – 2011-04-28 09:24:01

+0

我已经测试过IE8和FireFox4(两者的结果相同) – 2011-04-28 09:26:28

回答

0

的问题是不是在该代码,即工作正常,是通过在标记(生效)Sctipt标记顺序产生的问题

WRONG:

<script src="/Scripts/jquery-1.5.2.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery-ui-1.8.11.custom.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.maskedinput-1.3.min.js" type="text/javascript"></script> 

RIGHT:

<script src="/Scripts/jquery-1.5.2.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery-ui-1.8.11.custom.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.maskedinput-1.3.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>