[英]How to force DOM modifications done in success function persist within a jQuery.Ajax() call?
我通過下面的調用從webMethod獲取JSON對象,並根據返回的對象屬性設置了一些textBox值。
問題是,剛才我的文本框已填充,但隨后它們立即返回空。
我會出錯還是無法在成功函數中修改DOM元素?
謝謝。
var ajaxCallOptions = {
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/JQuery/Chapter16-AJAX/PersonWebServices.asmx/GetPerson",
context: document.body,
data: JSONObject,
dataType: "json",
success: function(data, textStatus, XMLHttpRequest){
var myPerson = data;
jQuery("#"+"<%=txtFirstName.ClientID %>").val(myPerson.d.FirstName);
jQuery("#"+"<%=txtLastName.ClientID %>").val(myPerson.d.LastName);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('Error: '+textStatus);
} };
jQuery.ajax(ajaxCallOptions);
返回的數據是:
附加說明: {“ d”:{“ __ type”:“ BusinessObjects.Person”,“ FirstName”:“ Burak”,“ Id”:“ 001”,“ LastName”:“ Ozdogan”,“部門”:“信息技術“}}
這是綁定到click事件形式的函數:
<asp:Button ID="btnSearch" runat="server" Text="Search" OnClientClick="loadPerson($('.personId'));"/>
如果通過提交觸發了$.ajax()
則可能會發生默認行為,然后重新加載頁面。
使用return false;
否則,請在您的提交處理程序的末尾添加event.preventDefault()
。
$('.mySubmitButton').submit(function() {
// Send ajax request
return false;
});
要么:
$('.mySubmitButton').submit(function( event ) {
event.preventDefault()
// Send ajax request
});
當您想防止默認行為時,將這種相同的技術用於從<a href=''>
元素創建的鏈接,或用於具有該行為的任何其他具有默認行為的元素。
我建議使用FireBug或類似方法檢查AJAX調用返回的內容。 如果失敗,請嘗試警告返回的數據。
數據返回的是預期數據嗎?
謝謝帕特里克。
經過修改后,它起作用了:
<asp:Button ID="btnSearch" runat="server" Text="Search"
OnClientClick="loadPerson($('.personId'), event); return false;"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.