2012-06-15 37 views
2

我使用它用了jQuery AJAX做的大部分工作的jquery form plugin。我們的jQuery 1.7.2jQuery的AJAX切斷響應在IE

我們正在使用它通過AJAX發送表單服務器,要麼返回一個值indiciating成功或驗證錯誤交回表格。

我已經在Firefox和Chrome工作時的驗證發現錯誤包含舊形式的div的內容被替換爲新的一個有錯誤。

$( '#FormDiv')空()HTML(響應)。;

的效應初探看起來像下面這樣:在IE

<form action="/MyForm/Edit" id="MyForm" method="post"><input id="Id" name="Id" type="hidden" value="" /> 
    <input id="PlantId" name="PlantId" type="hidden" value="1" /> 
    <table> 
     <tr><td class="field"> 
       ID 
      </td> 
      <td> 
       <input class="required" id="MyId" name="MyName" type="text" value="JP001" /> 

      </td> 
      <td class="field">Description</td> 
      <td><input class="required" id="Description" name="Description" type="text" value="" /> 
     </tr> 
     <tr> 
      <td class="field">Created by</td> 
      <td>Joe Bloggs</td> 
      <td class="field">Create date</td> 
      <td>15/06/2012</td> 
     </tr> 
    </table> 
</form> 

調試中,我可以看到的是,AJAX調用實際上有這個在其返回身體,不過參數我的方法是消除外在形式出發和結束標記所以基本上它只是一個表。

我嘗試了幾個不同的事情,試圖找出包括設置processData爲false(不知道是否真的會影響它),並將returnType設置爲「text」和「html」,但沒有真正幫助。

任何想法?


所以,事實證明,如果我在一個div包裹的形式,似乎一切都工作正常,搞不清什麼在那裏發生的,如果任何人都可以解釋這一點,他們可以有答案

回答

2

它不一個jQuery的bug。

這是一個不那麼知名的Javascript的「功能」

顯然的innerHTML在FF3和IE6 +(或者其他人)不喜歡的形式作爲標籤的innerHTML的一部分。如果你願意,你可以測試一下:

<div id="test"> 
    <form> 
     <input> 
    </form> 
</div> 

<script> 
    window.onload=document.getElementById('test').innerHTML = "<form><input type="hidden" name="blah"></form>"; 
</script> 



Result: 

<div id="test"> 
    <input type="hidden" name="blah"> 
</div> 

不明白爲什麼,但就是他們如何實現它。