2012-02-29 38 views
1

我有這樣的代碼:

$('#customerPaymentTable > tbody > tr').eq(index).after("<tr><td colspan='6'><center>" + $('#customerRecordForm').load(url) + "</center></td></tr>"); 

的問題是它返回值object Object代替div元素。奇怪的部分是如果我獨立加載div,我的意思是如果我不將它插入它正在工作的錶行中。

工作代碼爲:

$('#customerRecordForm').load(url); 

我要怎麼做工作?我真的需要插入div格式。請幫忙。提前致謝。

+2

OMG'

'?這已被永遠棄用... – elclanrs 2012-02-29 10:09:08

回答

2

的問題是,因爲$('#customerRecordForm').load(url);將填補#customerRecordForm元素從URL中的HTML,然後返回jQuery對象,而不是HTML作爲一個字符串。

您有兩種選擇。首先,你可以改變的邏輯,讓你從一個AJAX調用需要的HTML,然後插入到表單元格,這樣的:

$.ajax({ 
    url: url, 
    dataType: "html", 
    success: function(html){ 
     $('#customerPaymentTable > tbody > tr').eq(index).after("<tr><td colspan='6'><center>" + html + "</center></td></tr>"); 
    } 
}); 

或者,你可以在細胞追加,然後調用load()對這個新的元素,像這樣:

var $row = $('#customerPaymentTable > tbody > tr').eq(index); 
$row.after('<tr><td colspan='6' class="foo"></td></tr>'); 
$(".foo", $row).load(url); 
+0

非常感謝您的回答,特別是對於解釋。 – NinjaBoy 2012-02-29 10:51:01

1

我想你是用一些奇怪的方式使用它。

你應該在你想要加載數據出現的元素上調用加載函數。沒有從加載(url)函數返回的輸出值。這裏

$('#customerRecordForm').load(url); 

更多信息:它只是當你創建一個

<div id="customerRecordForm"></div> 

然後在JavaScript中你只呼叫負載字符串從URL並將其放入元素與ID customerRecordForm

所以:http://api.jquery.com/load/

在你的例子中它可能是這樣的:

$('#customerPaymentTable > tbody > tr').eq(index).after("<tr><td colspan='6'><div id='customerRecordForm'></div></td></tr>"); 
$('#customerRecordForm').load(url); 
1

jQuery.load()不會返回有效的HTML塊,而是一個jQuery對象。此外,jQuery.load()將內容異步加載到您調用它的元素中。當然不是你想要的...

你將不得不在內容加載後注入html代碼。

$.get(url, function (response) { 
    $('#customerPaymentTable > tbody > tr').eq(index) 
     .after("<tr><td colspan='6'><center>" + response + "</center></td></tr>"); 

});