Jquery序列化在IE浏览器上不起作用

4

我列出了我的代码,它在所有浏览器中都可以正常工作,但在IE中无法正常工作。我在Stack Overflow上搜索解决方案,但仍然无法解决。请问有人能够帮助我吗?$(this).serialize()在IE中返回为空。

$('Form#UserTripSearch').live('submit',function()
{
    $('#NavDetailHead12').html(HugeLoading);// for loader image
    alert($(this).serialize()); 

// 需要返回 => 类型为1,按降序排序,状态为已付款,名称为peter

    var fullurl = $(this).attr('action')+'/'+$(this).serialize();
    fullurl1= fullurl.replace(/&/g, "/");
    fullurl2= fullurl1.replace(/=/g, ":");
    // fullurl2 => sitename.com/type:1/sortby:desc/status:paid/name:peter
    $.ajax({
            type: "GET",
            url: fullurl2,
            data: "ajax=true",
            success: function(data)
            {
                $('#NavDetailHead12').html(data);
            }
        });

    return false;
});

HTML 代码:
<form action="sitename/search" method="get" id="UserTripSearch">            
    <select id="UserType" name="type">
        <option value="1">User</option>
        <option value="2">Member</option>
        <option selected="selected" value="3">Non Member</option>
    </select> 
    .....
    <input type="text" id="UserName" placeholder="First name, Username" class="TextfiledCommon" name="name">            
        <div style=" float:left">               
            <span class="button">
                <span>
                    <input type="submit" value="Search" id="button" name="button">
                </span>
            </span>
        </div>
</form>

注意:我的HTML很好...

1
你能把问题隔离到一个fiddle中吗?没有HTML,这里真的没有什么可说的了。例如,http://jsfiddle.net/KGa8q/4/在IE中运行良好。 - Sinetheta
有特定的IE版本吗?还有任何错误抛出吗? - Jakub
所有版本的IE都没有抛出任何错误。通过AJAX正确提交表单,但序列化显示为空值。 - AnNaMaLaI
HTML代码 <form action="sitename/search" method="get" id="UserTripSearch">
<select id="UserType" name="type"> <option value="1">用户</option> <option value="2">会员</option> <option selected="selected" value="3">非会员</option> </select> ..... <input type="text" id="UserName" placeholder="名字,用户名" class="TextfiledCommon" name="name">
<div style=" float:left">
<span class="button"> <span> <input type="submit" value="搜索" id="button" name="button"> </span> </span> </div></form>
- AnNaMaLaI
3个回答

3

在IE 10(标准/怪异模式)中,jQuery存在一个bug,即.serialize()和.serializeArray()不能序列化表单数据。

<div id="showRole">
    <form>
        <input name="roleName" type="text" />
        <input name="des" type="text" />
    </form>
</div>

修复方法为:

var data = $("#showRole input").serialize();

使用div的id引用表单并序列化数据。
IE会改变DOM树,jquery无法获取元素。

1
$('Form#UserTripSearch').live('submit',function()
{
    formdata =   $(this).serialize();
    alert( formdata); 
    $('#NavDetailHead12').html(HugeLoading);// for loader image
 ..........
 .............
 ................

尝试使用上述代码,它应该可以工作。

您正在替换 DOM 后进行序列化。这可能是问题所在,因为预期的数据不存在。尝试这个 :)


非常感谢,现在它正常工作了...我先显示加载器,然后序列化,所以只有IE不起作用。 - AnNaMaLaI

0
请在Fiddle Link中检查答案。 现在已经可以正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接