0

簡単なことをしようとしていますが、明らかに何かが欠けています。を使用して、フォームから Web サービスにデータを投稿したいと考えていjsonます。シンプルですよね?

私は自分のHTMLを持っています

    <div id="addDiv">
    <form id="addItemForm">
        <fieldset>
            <label for="title">Title</label> 
            <input id="title" class="txt" type="text" name="title"/></BR>

            <label for="url">URL</label> 
            <input id="url" class="txt" type="text" name="url"/></BR>

            <label for="author">Author</label> 
            <input id="author" class="txt" type="text" name="author"/>

        </fieldset>
    </form>
</div>

次に、私のjsファイルで次のことを行います。

              JSONdata = JSON.stringify($('#addItemForm').serialize());
          console.log("Form transformed to: " + JSONdata);

ペイロード出力 (JSONdata):

Form transformed to: "title=tgtg&url=5rfrf&author=yhyhyyh"

念のため私のAjaxコード:

    $.ajax({
    type: "POST",
    url: serviceUrl,
    dataType: 'json',
    data: JSONdata,
    contentType : 'application/json',
            ............

だから私が見る問題は、json文字列が有効なものではないということです[{ "title": "tgtg", "url": "5rfrf" .... },{...}]

したがって、私のサービスは失敗します。
RESTテスターで試してみましたが、サービスに問題はありません。問題は、投稿しようとしたときですjquery.

私も試してみましserializeArray()たが、別のペイロードも間違っています:

[{"name":"title","value":"tgtg"},{"name":"url","value":"5rfrf"},...]

jsonつまり、郵便で送信する適切な文字列を作成する方法が見つかりません。

ありがとうございます!

4

1 に答える 1

1

serializeを使用するのではなく、serializeArrayメソッドを使用します。オブジェクトで必要な場合でも、オブジェクトのname-valueペア プロパティを作成できます。

var res = {},
    arr = $('#addItemForm').serializeArray();
for (var i=0; i<arr.length; i++)
    res[arr[i].name] = arr[i].value;
于 2013-08-26T20:35:08.810 に答える