2010-08-26 137 views
2

我通常使用ASP.NET MVC 2,但是它有一些问题,所以我开始使用ASP.NET MVC 2 + jQuery并且一切正常。但有一个问题,jQuery不会加载我的响应。在ASP.NET MVC方面,我重申了一个局部视图,我也得到了客户端上的响应,但没有任何呈现。我该如何解决这个问题?jQuery没有加载响应

这里是jQuery代码:

function addCredential(state, id) { 
var daten = getJson(state, id); 
$.ajax(
    { 
     type: "POST", 
     url: "/Account/SetCredential/", 
     data: daten, 
     dataType: "json", 
     success: function(partialView) { 
      $('#Credentials').replaceWith(partialView); 
      location.reload(); 
     } 
    }); 
    return true; 
}; 

function getJson(state,id) { 
    var username = $('#username').val(); 
    return {"username": username, "credential_id": id , "state": state }; 
}; 
+3

什么是'location.reload()'调用?这将刷新页面:) – 2010-08-26 12:08:21

+0

这只是一个尝试thx的评论 – Konrad 2010-08-27 06:46:57

回答

3

问题看起来像location.reload();

那之后你重装页面AJAX更新,有效地恢复它的状态恢复到它之前是方式你插入的内容与.replaceWith()

更新:看起来像你使用dataType: "json"并插入到DOM?这可能也是一个问题。如果视图以HTML格式返回,则应将其替换为dataType: "html"

+0

我的问题是,没有什么刷新页面...如果我重新加载页面(与F5按钮)我的自我的一切都corret但jquery dosen't这样做,我应该尝试一个jQuery的旧版本? – Konrad 2010-08-26 12:24:27

+0

您的代码意外行为可能有多种原因。你有用于FireFox的Firebug吗?如果是这样,摆脱'location.reload()'并检查控制台的a)javascript错误或b)来自服务器的响应问题。您也可以考虑使用jQuery的'.append()'或'.appendTo()'方法而不是'replaceWith()',尽管我会尝试作为最后的手段,因为问题很可能在其他地方。 – Stephen 2010-08-26 13:21:38

+0

使用'location.reload()'总会给你想要达到的目的,所以一定要删除它。 – Stephen 2010-08-26 13:23:07

1

@Konrad,请尝试使用JSON2库(http://www.json.org/js.html)在成功函数中警告“partialView”对象,以查看您之前获得的内容重新加载页面。另外,确保$('#Credentials')正在返回一个对象。当我尝试在页面上选择元素时遇到问题时,通常会检查返回的jQuery对象的长度值。如果长度= 0,那么你没有获得元素。此外,如果您尝试将HTML注入$('#Credentials'),partialView可能不是正确的格式。成功函数接受一个对象参数,它来自解析你调用的web方法的responseText以获得你所说的partialView。

更新: 请查阅http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/了解更多信息,使用$ .ajax。在这个博客上有很多很棒的信息。

更新: 这是我如何使用JSON库来查看返回的数据。 alert(JSON.stringify(partialView));

+0

Thx为您提供帮助dataType是问题所在。 – Konrad 2010-08-27 07:09:50