2010-08-26 194 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