jQuery $.ajax()似乎无法在IE8上正常使用,但可以在Firefox,Chrome和Safari上使用。我正在提交表单并以 JSON 格式回复。
$.ajax()
test.php:
<script type="text/javascript" src="jquery-1.4.2.js"></script> <script type="text/javascript" src="jsFile.js"></script> <form action='_test.php' method='post' class='ajaxform'> <input type='text' name='txt' value='Test Text'> <input type='submit' value='submit'> </form> <div id='testDiv'></div>
_test.php:
<?php $arr = array( 'testDiv' => $_POST['txt'] ); echo json_encode( $arr ); ?>
jsFile.js:
jQuery('.ajaxform').live('submit', function(event) { $.ajax({ url : $(this).attr('action'), type : $(this).attr('method'), dataType: 'json', data : $(this).serialize(), success : function( data ) { for(var id in data) { jQuery('#' + id).html( data[id] ); } } }); return false; });
在Firefox,Chrome,Safari中:
当我提交表单时,将 textfield(txt)的 值成功填充到 DIV(testDiv)中, 而不会干扰整个页面。
在IE中:
当我提交表单时,它只在屏幕上显示json表单,如下所示: {"testDiv":"Test Text"}
{"testDiv":"Test Text"}
如何在IE中解决此问题?
谢谢。
我用这个替换了我的jquery代码,它在所有浏览器上都可以使用:
jQuery(document).ready(function(){ jQuery('.ajaxform').submit( function() { $.ajax({ url : $(this).attr('action'), type : $(this).attr('method'), dataType: 'json', data : $(this).serialize(), success : function( data ) { for(var id in data) { jQuery('#' + id).html( data[id] ); } } }); return false; }); });
我不知道这是什么,但是它现在正在工作。感谢所有人的参与,并帮助我解决此问题。