Получение данных сериализации в файле PHP, называемом AJAX - PullRequest
9 голосов
/ 24 февраля 2012

Форма отправки 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'];    

Как я могу получить доступ к каждому значению переменной box на стороне PHP?

Ответы [ 8 ]

10 голосов
/ 24 февраля 2012

Ваши 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;
}

Edit: Вы должны использовать serializeArrayфункция в JQuery.Тогда он будет работать с этим кодом.

2 голосов
/ 19 апреля 2017
$data = array();
foreach(explode('&', $_POST[data]) as $value)
{
    $value1 = explode('=', $value);
    $data[$value1[0]] = validateInput($value1[1]);
}

var_dump($data['box']);
1 голос
/ 16 июня 2016

ваш JS должен быть таким -

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

Теперь сделайте это в своем PHP-скрипте -

print_r($_POST);

вы получите все данные формы в окне предупреждения.

1 голос
/ 24 февраля 2012

ваши данные в php будут содержать такую ​​строку

0 голосов
/ 22 января 2016

При условии, что ваш сервер получает строку, которая выглядит примерно так

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

... что-то вроде этого, вероятно, все, что вам нужно:быть массивом, смоделированным, как вы ожидаете.Обратите внимание, что это работает и с массивами HTML.

Для получения дополнительной информации см. Следующее: http://www.php.net/manual/en/function.parse-str.php

Надеюсь, это полезноУдачи!

0 голосов
/ 04 января 2014
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");
        }
    });
0 голосов
/ 24 февраля 2012

Изменение

data: "box1="+str,

на

data: str,

serialize() приведет к появлению строки типа: input1=value1&input2=value2.Так что в вашем php вы можете получить доступ к каждому значению, например, $value1 = $_PHP['input1'];

0 голосов
/ 24 февраля 2012

$ коробка = $ _ POST [ 'окно']; и $ box - это массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...