在JQuery中发布表单并在IE中填充DIV-break

在JQuery中发布表单并在IE中填充DIV-break,jquery,ajax,forms,Jquery,Ajax,Forms,我试图创建一个表单,通过jQuery发布数据并将返回填充到同一个DIV中。这样,页面不会在发布操作时刷新 <div id="add_value_form"> <form method="POST" action="#" onsubmit='return false'> <!-- input fields --> <input type="submit" value="Add" onclick='post_form("/add_value");'

我试图创建一个表单,通过jQuery发布数据并将返回填充到同一个DIV中。这样,页面不会在发布操作时刷新

<div id="add_value_form">

<form method="POST" action="#" onsubmit='return false'>
  <!-- input fields -->
  <input type="submit" value="Add" onclick='post_form("/add_value");'>
</form>

</div>
这在FF3中非常有效,但是在IE6/7中它只能随机工作

服务器确认post请求来自IE,但它只能偶尔获得post数据

出于好奇,我决定提醒数据变量:

$.post(url, {'test':'test'}, function(data) {alert(data);}, "text");
当然,FF3每次都会打印返回的HTML,而IE6/7则主要打印空白,偶尔会返回HTML。我在这个问题上找不到任何东西,那么我做错了什么

已解决:我跟踪到请求处理代码中的HTTP重定向。因此,处理POST请求的函数将抛出重定向,IE不喜欢它。当时我有一个完全的精神便秘,我真的不需要重定向


当然,奇怪的是,这在FF中起作用,IE有时也会起作用,因为重定向已经就位

我想说,在这个场景中,您根本不必使用表单标记

<div id="add_value_form">
  <!-- input fields -->
  <input type="button" value="Add" onclick='post_form("/add_value");' />
</div>
Update由于这仍然会导致问题,我将使用
$.ajax
方法执行一些测试。此外,我不相信POST调用会被缓存,但为了以防万一,请尝试将缓存设置为false。另一个测试是以已经编码的方式传递数据,以确保没有序列化问题。如果您仍然有问题,您可以尝试将数据类型设置为文本

$.ajax({
  url: '/add_value',
  type: 'POST',
  cache: false,
  data: 'test=testValue',
  dataType: 'text',
  complete: function(xhr, textStatus) {
    alert('completed');
  },
  success: function(data) {
    alert(data);
  },
  error: function(xhr, textStatus, errorThrown) {
    alert('woops');
  }
});

我想说的是,在这个场景中,您根本不必使用form标记

<div id="add_value_form">
  <!-- input fields -->
  <input type="button" value="Add" onclick='post_form("/add_value");' />
</div>
Update由于这仍然会导致问题,我将使用
$.ajax
方法执行一些测试。此外,我不相信POST调用会被缓存,但为了以防万一,请尝试将缓存设置为false。另一个测试是以已经编码的方式传递数据,以确保没有序列化问题。如果您仍然有问题,您可以尝试将数据类型设置为文本

$.ajax({
  url: '/add_value',
  type: 'POST',
  cache: false,
  data: 'test=testValue',
  dataType: 'text',
  complete: function(xhr, textStatus) {
    alert('completed');
  },
  success: function(data) {
    alert(data);
  },
  error: function(xhr, textStatus, errorThrown) {
    alert('woops');
  }
});

事实上,我仍然从IE中获得了随机行为:(谢谢!事实上,我已经尝试用.ajax来解决这个问题了。到目前为止,我在两种浏览器中都得到了模糊的“错误”返回,这让我无比高兴,但这非常有帮助。事实上,我仍然从IE中获得了随机行为:(谢谢!事实上,我已经在尝试用.ajax解决这个问题了。到目前为止,我在这两种浏览器中都得到了模糊的“错误”返回,这让我感到无比高兴,但这非常有用。
$.ajax({
  url: '/add_value',
  type: 'POST',
  cache: false,
  data: 'test=testValue',
  dataType: 'text',
  complete: function(xhr, textStatus) {
    alert('completed');
  },
  success: function(data) {
    alert(data);
  },
  error: function(xhr, textStatus, errorThrown) {
    alert('woops');
  }
});