2013-03-08 54 views
0

行,我有一個表,用戶可以追加一行如下:數據裝入附加行表使用Ajax和Json的

// Append New Row To Email Change Form // 
$(function() { 
var count = 1000; 
$('#AddRow').click(function() { 
    $('table.subgrid tbody').append('<tr><td><input type="hidden" name="delete[]" value="No">No</td><td><input type="text" name="customernumber[]" id="' + count + '_cust" onChange="ajax_customer_info(' + count + ')" maxlength="6" /></td><td><span id="' + count + '_name"></span></td><td><select name="type[]"><option value="A">ACH</option><option value="C">Credit</option><option value="I">Invoice</option><option value="S">Statement</option></select></td><td><select name="deliverymethod[]"><option value="E">Electronic</option><option value="P">Print</option></select></td><td><input size="40" type="text" class="fieldname" maxlength="50" name="newemailaddress[]" /><input type="hidden" name="oldemailaddress[]" /><input type="hidden" name="companyid[]" value="1" /><input type="hidden" name="action[]" value="add" /></td></tr>'); 
    count++; 
}); 

});

在這一行中,他們可以輸入一個客戶號碼,通過ajax應該自動返回客戶名稱。這裏是阿賈克斯:

function ajax_customer_info(row) { 
xmlHttp=GetXmlHttpObject(); 
if (xmlHttp!=null) { 
    var url="/hq/servlet/customerinfo"; 
    url=url+"?customernumber="+document.getElementById(row+"_cust").value; 
    url=url+"&sid="+Math.random(); 
    xmlHttp.onreadystatechange=function(row) { 
     if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
      xmlDoc=xmlHttp.responseXML; 
      var data = JSON.parse(xmlHttp.responseText); 
      document.getElementById(row+"_name").innerHTML=data.name; 
     } 
    } 
    xmlHttp.open("GET",url,true); 
    xmlHttp.send(null); 
} 
} 

問題是這不填充客戶名稱。我發現,如果我刪除行+在此:

document.getElementById(row+"_name").innerHTML=data.name; 

而且具有發言權替換它(「名稱」),當然改變對應ID,在所附的排它工作的地方。但是,我需要唯一的ID,因爲用戶可以追加多行。有人可以告訴我我在做什麼錯嗎?謝謝!

+2

爲什麼在頁面上已經有jQuery的時候使用自定義的ajax方法,該頁面上有很好的$ .ajax()函數可供使用? – Dogoku 2013-03-08 23:42:22

+1

我不知道這是否是問題的原因,但是您的id屬性不應以數字開頭。它必須以角色開始。所以試着給這個元素id id =「cust_'+ count +''' – Steve 2013-03-08 23:42:43

+0

@Dogoku好問題,我唯一給你的答案是我對ajax一般都比較陌生,並且不熱衷於遵循所有最佳實踐。我會仔細看看的。如果你喜歡它,你能給我一個例子,說明如何使用$ .ajax函數來實現上述功能嗎? – Tmac 2013-03-09 00:21:19

回答

1

你正在爲你的ajax設置一個參數row就緒狀態函數,這將被用來代替你傳遞給ajax_customer_info的行值。因此,使用xmlHttp.onreadystatechange=function()而不是xmlHttp.onreadystatechange=function(row)

+0

不錯,趕上:) – Dogoku 2013-03-08 23:48:30

+0

工作就像一個魅力!謝謝穆薩! – Tmac 2013-03-09 00:21:46