0

JSON配列をエンコードしてphpページに送信し、mysqlに追加しようとしています:

var data = $('form').serialize();
$.ajax({
    type: 'POST',
    url: 'naujas.php',
    dataType: 'json',
    data: ({
        json: JSON.stringify(data)
    }),
    success: function () {
        $('#naujas').load('naujas.php');
    }
});

しかし、私はそれが機能していないと思います.phpから次のような応答を得ています:pav=1&ppav=2&kiekis=3&kaina=4d&ppav=5&kiekis=6&kaina=7&ppav=8&kiekis=9&kaina=0

phpファイル

<?php
    $json = json_decode($_POST['json']);
    echo $json;
?>

私が間違っていることは何ですか?

4

3 に答える 3

1

このようにしてみてください:

var data = $('form').serializeArray().reduce( function(obj,cur){
    obj[cur.name] = cur.value;
    return obj;
},{});

説明:

  • .serializeArray()は、次の構造を持つ配列を返します。

    [ {name:"inputname1",value:"inputvalue1"},
      {name:"inputname2",value:"inputvalue2"},
      //---------------------------------------
      {name:"inputnamen",value:"inputvaluen"} ]
    
  • .reduce()関数は、その配列をオブジェクトに変換します。

    { "inputname1":"inputvalue1",
      "inputname2":"inputvalue2",
      //---------------------------------------
      "inputnamen":"inputvaluen" }
    
于 2012-07-11T19:03:31.090 に答える
0

php ストリップスラッシュを使用する必要がある場合があります

http://php.net/manual/en/function.stripslashes.php

このようなものだと思います

json_decode(stripslashes($_POST['json']));
于 2012-07-11T19:20:33.190 に答える