2013-02-25 38 views
8

我從一個操作返回一些簡單的HTML標記在JSON響應中。Chrome在使用jQuery ajax時刪除表單元素

以下是完整的響應(添加換行符以提高可讀性):

{ 
     "Success":true, 
     "Content":"\r\n 
<div class=\"editor-form\">\r\n 

<form action=\"/Blah/Blah/5104?id=9\" method=\"post\"> 

<input data-val=\"true\" data-val-number=\"The field Id must be a number.\" data-val-required=\"The Id field is required.\" id=\"Id\" name=\"Id\" type=\"hidden\" value=\"5104\" /> 

<input data-val=\"true\" data-val-number=\"The field Vat Rate must be a number.\" data-val-required=\"The Vat Rate field is required.\" id=\"VatRate\" name=\"VatRate\" type=\"hidden\" value=\"1.2000\" /> 

<div class=\"display-field\">\r\n\t 

<label for=\"Price\">Price (Ex-VAT)</label>\r\n\t 

<input class=\"text-box single-line\" data-val=\"true\" data-val-number=\"The field Price must be a number.\" data-val-required=\"The Price field is required.\" id=\"Price\" name=\"Price\" type=\"text\" value=\"92.50\" />\r\n\t 

</div>\r\n 

</form> 
</div>", 
"Data":null, 
"Errors":null 
} 

這是我用它做一個成功的響應後:

$("#EditPriceDialog").html(data.Content).dialog(MyProject.UI.DialogOptions({ minWidth:380, minHeight:200, modal:true })) 

當標記呈現,表單元素不見了。表單中的元素仍然存在。這隻發生在Chrome中。在IE9和FF 19中,表單元素就在那裏。 Chrome有什麼不同?

+1

我無法重現它 – Alexander 2013-02-25 15:29:45

+0

你能不能給我們的東西,可以重現該問題? – 2013-02-25 15:32:31

+0

這是一個非常大的頁面,但我會嘗試... – Kev 2013-02-25 15:50:05

回答

17

Chrome刪除表單元素,如果它已被另一個表單元素包圍。此外,ASP .Net呈現所有服務器頁面的表單標籤,因此Chrome將剝離data.Content中的表單標籤。我不認爲IE或Firefox的行爲如此。

編輯:希望你會發現這很有用,How do you overcome the html form nesting limitation?

+0

這是我的情況下正確的答案。真正的黑魔法,鉻是... – 2013-07-24 11:09:44

+0

我有這個問題,它是由一個未封閉的形式標籤進一步向上的頁面。 – 2017-08-07 12:00:16