在使用AJAX调用的PHP文件中检索序列化数据

时间:2012-02-24 12:38:26

标签: php ajax jquery

表单发送AJAX代码:

var str = $("form").serialize();
alert(str);
// var uns=@unserialize(str);
//alert(uns);
$.ajax({
    type: "POST",
    url: "update.php",
    data: "box1="+str,
    success: function(value)
    {
        $("#data").html(value);  
    }

HTML表单:

<form>
  <input type=checkbox name=box[] value='1'/><input type=checkbox name=box[] value='2'/>
</form>  

在我的PHP中:

$box=$_POST['box1'];    

如何访问PHP端的每个框变量值?

8 个答案:

答案 0 :(得分:9)

你的js应该是这样的:

var str = $("form").serializeArray();
$.ajax({  
    type: "POST",  
    url: "update.php",  
    data: str,  
    success: function(value) {  
            $("#data").html(value);
    }
});

使用php,你应该循环你的结果数组。

$box = $_POST['box'];
foreach ($box as $x) {
    echo $x;
}

修改 你必须在jQuery中使用serializeArray函数。然后它将使用此代码。

答案 1 :(得分:2)

$data = array();
foreach(explode('&', $_POST[data]) as $value)
{
    $value1 = explode('=', $value);
    $data[$value1[0]] = validateInput($value1[1]);
}

var_dump($data['box']);

答案 2 :(得分:1)

php中的数据将包含这样的字符串

field1=value1&field2=value2&....

因此您可以使用$_POST['field1]获取您的value1,使用$_POST['field2']

获取value2

答案 3 :(得分:1)

你的JS应该是这样的 -

<div class="product">
<div class="item">
</div>
<div class="item">
</div>
<div class="item">
</div>
<div class="item">
</div>
<div class="item">
</div>
<div class="item">
</div>
 </div>

现在在你的php脚本中执行此操作 -

var str = $( "form" ).serializeArray();
    var postData = new FormData();
     $.each(str, function(i, val) {
                postData.append(val.name, val.value);
 });
$.ajax({
           type: "POST",
           data: postData,
           url: action,
           cache: false,
           contentType: false,
           processData: false,
           success: function(data){
              alert(data);
          }
    });

您将在警告框中获取所有表单数据。

答案 4 :(得分:0)

更改

data: "box1="+str,

data: str,

serialize()会生成一个字符串,如:input1=value1&input2=value2。因此,在您的php中,您可以使用例如$value1 = $_PHP['input1'];

来访问每个值

答案 5 :(得分:0)

values=$("#edituser_form").serialize();//alert(values);
    $.ajax({
        url: 'ajax/ajax_call.php',
        type: 'POST',
        dataType:"json",
        data: values,
        success: function(){
            alert("success");
        },
        error: function(){
            alert("failure");
        }
    });

答案 6 :(得分:0)

前提是您的服务器正在接收类似于此内容的字符串

    $("form").serialize();
   "param1=someVal&param2=someOtherVal"

...这样的事情可能就是你所需要的:

    $params = array();
    parse_str($_GET, $params);
然后,$ params应该是一个模型,模拟你的期望。请注意,这也适用于HTML数组。

有关详细信息,请参阅以下内容:http://www.php.net/manual/en/function.parse-str.php

希望这有帮助。祝你好运!

答案 7 :(得分:-3)

$盒= $ _ POST [ '框']; 和$ box是一个数组。