0

現在、入力属性と名前属性を持つフォームがあります。

jqueryで必要なものを取得できます。

 var inputValues= $('.myForm').serialize();

alert(inputValues)の場合、必要なものを取得します(フォームのGET変数のようにcategories=examplevalue&name=examplename&email=exampleemail:)

今、私はそれをajaxでPHPに渡そうとしています(ajax.js

            $.ajax({
                url: "myfile.php",
                type: "POST",
                data: "inputs="+inputValues
            }).done(function(data){
                alert(data);
            });

私のPHPではこれがあります:

if(isset($_POST['inputs'])){
   echo $_POST['inputs'];
}

フォームに応じて一連の変数を警告すると思いますが、名前の変数をエコーするだけです。categories

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

ありがとう

4

5 に答える 5

3

2つのこと:

  1. データの割り当て:

    $.ajax({
            url: "myfile.php",
            type: "POST",
            data:  $('.myForm').serialize()
    
    }).done(function(data){
            alert(data);
    });
    

    フィールド名の前に入力を付けます。のように<input name="x"/>なり<input name="inputs[x]"/>ます。

  2. phpで配列を表示する:

    if(isset($_POST['inputs'])){
       var_dump($_POST['inputs']);
    } 
    

    (スカラー値でない場合にのみ出力されます)echoArray

アップデート

Lior Cohenが正しく、サーバーがフィールド名表記を認識しない場合(デフォルトのphp設定の場合はそうではありません)、次の簡単な回避策を使用できます。

parse_str(file_get_contents("php://input"), $POST);

次に、$POSTの代わりに使用し$_POSTます。$POSTそれはスーパーグローバルではないことに注意してください。

于 2012-06-30T06:28:06.247 に答える
2

serialize()foo=bar&baz=yikes単一のパラメーター(この場合)に割り当てることができないクエリ文字列()形式を生成しますinputs=...

$.ajax通話では、削除して単独でinputs=使用します。inputValuesこれにより、を使用してフォーム内の個々の変数を取得できます$_POST['myvar']

于 2012-06-30T06:29:19.693 に答える
1

これをチェックしてください:http://jquery.webspirited.com/2011/02/jquery-serializepost/

書式設定について申し訳ありませんが、コンピューター上で修正します

 (function($) {

        $.fn.serializePost = function() {

var data = {};

var formData = this.serializeArray();

for (var i = formData.length; i--;) {

var name = formData[i].name;

var value = formData[i].value;

var index = name.indexOf('[]');

if (index > -1) {

name = name.substring(0, index);

if (!(name in data)) {

data[name] = [];

}

data[name].push(value);

}

else

data[name] = value;

}

return data;

};

})(jQuery);
于 2012-06-30T06:34:00.597 に答える
0

PHPに送信しているものを見てください...'inputvalues='をシリアル化された形式と連結すると、次のものがPHPに送信されます。

inputs=categories=examplevalue&name=examplename&email=exampleemail

だから、ええ...それは混乱するでしょう。:)

代わりに、jQueryでこれを実行してください。

data:inputValues

投稿の承認条件を変更する必要があります。

データをJSONにシリアル化して逆シリアル化することもできますが、これで開始できます。

于 2012-06-30T06:28:26.327 に答える
0

私はこのコードをテストしていませんが、うまくいくと思います

    var inputValues= $('.myForm').serialize();
    $.ajax({
        url: "myfile.php",
        type: "POST",
        data: inputValues,
        success: function(data){
            alert(data);
            // or use: console.log(data); /*you need firebug to log*/
        }
    });

//およびphp

if(isset($_POST)){
   var_dump($_POST);
}
于 2012-06-30T06:28:51.250 に答える