簡體   English   中英

傳遞序列化的jQuery數據到PHP,我在做什么錯?

[英]passing serialized jquery data to php, what am i doing wrong?

我目前有一個帶有輸入和名稱屬性的表單。

我可以通過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名字變量

我在這里做錯了什么?

謝謝

兩件事情:

  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']); } 

    (當它不是標量值時, echo只會打印Array )。

更新資料

如果Lior Cohen是正確的,並且您的服務器無法識別字段名稱表示法(默認php設置不是這種情況),則可以使用以下簡單解決方法:

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

然后使用$POST代替$_POST 請注意,雖然$POST不會是超級全局的。

serialize()生成查詢字符串( foo=bar&baz=yikes )格式,該格式無法分配給單個參數(在您的情況下為inputs=... )。

$.ajax調用中,刪除inputs=而僅使用inputValues 這將允許您使用$_POST['myvar']獲得表單中的各個變量。

看看這個: 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);

只需看看您要發送給PHP的內容...如果將“ inputvalues =”與序列化形式連接起來,就可以將以下內容發送給PHP:

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

所以,是的...這將是令人困惑的。 :)

相反,只需在jQuery中執行此操作:

data:inputValues

您需要在帖子上更改接受條件。

您還可以將數據序列化為JSON並反序列化,但這應該可以幫助您入門。

我沒有測試此代碼,但我認為它有效

    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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM