【问题标题】:jQuery serialize error in internet explorerInternet Explorer中的jQuery序列化错误
【发布时间】:2013-03-07 16:22:17
【问题描述】:

我目前在 Internet Explorer 中使用 jQuery 方法 serialize() 时遇到问题,它在其他浏览器中运行良好。

首先,我将表单存储在一个变量中。

var oForm = document.forms["couponForm"]; 

然后我将它序列化并作为参数传递给 ajax 调用。

new Ajax.Request(sURL, { asynchronous : false, method : 'post',
                parameters : oForm.serialize(true),
                onComplete : function(p_oRequest){

                },
                onException : function(p_oRequest, p_oException) {
                    throw p_oException;
                },
                onLoaded : function() {}
                });

但是,我在 Internet Explorer 控制台中收到错误消息。

SCRIPT438:对象不支持属性或方法序列化。

IE应该支持serialize吗?

【问题讨论】:

  • 你在一个不是 jQuery 对象的对象上调用 jQuery 方法。
  • 如果不是 jQuery 对象,难道不应该在每个浏览器中给我一个错误吗?我认为如果 jQuery 出错,它会在任何地方都失败,但它只适用于 IE。
  • @jmoerdyk 你能发表你的评论作为答案吗?这就是我纠正问题的方式,我使用var oForm = $("couponForm"); 而不是var oForm = document.forms["couponForm"];,它纠正了 IE 的问题。

标签: jquery ajax


【解决方案1】:

表格应命名为couponForm

<form action="" method="post" name="couponForm">
</form>

请检查请求中是否有逗号(,)。最后一项结束后不能有逗号。它对 Internet Explorer 进行了严格检查。

最后一项后不要使用逗号

{ 
asynchronous : false, 
method : 'post',
parameters : oForm.serialize(true),//Dont use comma here
}

使用不带逗号的方式

{ 
asynchronous : false, 
method : 'post',
parameters : oForm.serialize(true)//The last item must not be ended with a comma.
}

【讨论】:

  • 我忘记了 ajax 调用的最后一行,我已经编辑了我的问题以包含它。参数后面还有一项。
  • 我可以看到该行仍然不完整: new Ajax.Request(sURL, { asynchronous : false, method : 'post', parameters : oForm.serialize(true), onComplete : function(p_oRequest ) });你能写完整的行吗?
  • 我已经添加了完整的 ajax 请求。
  • 你能把名为“couponForm”的表格也发一下吗?
  • 表格应命名为“couponForm”。
猜你喜欢
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 2018-12-18
  • 2012-02-13
  • 2013-05-28
  • 2011-05-01
  • 1970-01-01
相关资源
最近更新 更多