簡體   English   中英

如何強制在成功函數中完成的DOM修改保留在jQuery.Ajax()調用中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM