0

感谢大家的回复。找到的解决方案:我使用 DIV 而不是 FORM 并序列化其中的每个 INPUT。

当前小提琴代码:http: //jsfiddle.net/MyBZC/

表格:

<form id="sfn" name="sfn">
       <input name="datasource" type="hidden" value="TDA">
       <input name="staticfields" type="hidden" value="">
       <input name="returnfield" type="hidden" value="Complaintinformation_ID">
       <input  name="returnid" type="hidden" value="Complaintinformation_ID">
    eCI ID:<input  class="nostyle" type="text" name="id" id="Complaintinformation_ID" style="width:150px;"/> 
    Complaint number: <input  class="nostyle" type="text" name="ecin" id="ecin" style="width:150px;"/>
</form>

jQuery:

var ds= $("#sfn").serializeArray();
alert(ds);

alerting ds 给了我一个空的警告框。可能是因为这个 html 表单实际上在另一个表单标签内,所以 serializeArray() 不起作用?

未经编辑的真实(更长)html输出是这样的:

    <form id="searchform_srcSupplier" name="searchform_srcSupplier">
        <input name="datasource" type="hidden" value="DEACSQL10_BPCS_DATA">
        <input name="from" type="hidden" value="BPCS_AVM">
        <input name="where" type="hidden" value="Partner_ID='122'">
        <input name="componentname" type="hidden" value="srcSupplier">
        <input name="staticstrings" type="hidden" value="Supplier address">
        <input name="staticfields" type="hidden" value="LTRIM(RTRIM(VNDAD1))+'<br>'+LTRIM(RTRIM(VNDAD2))+'<br>'+LTRIM(RTRIM(VCITY))+'<br>'+LTRIM(RTRIM(VPOST))+' '+LTRIM(RTRIM(VSTATE))">

        <input class="nostyle" name="returnfield" type="hidden" value="VNDNAM">
        <input class="nostyle" name="returnid" type="hidden" value="VENDOR_id">
        <table ><tr>

            <td>
                Supplier ID: 
            </td>
            <td>
                <input  class="nostyle" type="text" name="VENDOR" id="VENDOR" style="width:150px;"/>
            </td>

            <td>
                Supplier name: 
            </td>
            <td>
                <input  class="nostyle" type="text" name="VNDNAM" id="VNDNAM" style="width:150px;"/>
            </td>

                </tr><tr>

    </tr>
    </table>
    </form>

(我已经尝试从表格中删除表格)

当前小提琴代码:http: //jsfiddle.net/MyBZC/

4

4 回答 4

2

试试这个:工作演示 http://jsfiddle.net/tFSdq/ http://jsfiddle.net/bnTLR/

您需要序列化容器内的输入。不是容器本身

希望这符合需要:)

PS 不要忘记单击按钮以在第二个演示中使用和click me man获取警报。serialize.serializeArray

代码

var ds= $("#sfn input").serializeArray();
alert(ds);​

进一步请参阅下面的 3 张图片,其中显示了这 2 个警报在输入的值上显示的内容。 在此处输入图像描述

图 2

在此处输入图像描述

图 3

在此处输入图像描述

于 2012-10-15T07:03:55.253 回答
1

#id像这样 添加

var ds= $("#sfn").serializeArray();
alert(ds);

serializeArray()两者serialize()都为我工作请检查myfiddle

于 2012-10-15T06:57:58.230 回答
1

就像您已经发现的那样,serializeArray()它不适用于嵌套表单,因为它是jQuery 文档中所述的非法HTML :

请注意,serializeArray()仅适用于表单元素,在另一个元素上使用此方法将不起作用。此外,此方法不会在嵌套表单上给出任何结果,这在 HTML 中是非法的。

您可能需要按照serialize()jhonraymos 的说明使用或使用 Tas_innit 的方法。

于 2012-10-15T07:07:03.227 回答
0

看看这个: http ://docs.jquery.com/Ajax/serializeArray

它写在这里......“这个方法不会在嵌套表单上给出任何结果,无论如何这在 HTML 中是非法的”

于 2012-10-15T07:07:22.693 回答