it-swarm.com.ru

Отправить массив с ajax-запросом на php

Я создал массив, как этот ["9", "ques_5", "19", "ques_4"]. Теперь я хочу отправить его из JS в PHP, но не получаю правильных результатов. Мой код JS:

$(".button").click(function(e) {

    e.preventDefault();
    $.ajax({
        type    : 'post', 
        cache   : false,
        url     : 'test/result.php',
        data    : {result : stuff},
        success: function(resp) {
            alert(resp);
        }
    });
});

В приведенном выше коде материал массив, который содержит записи. Как я могу отправить этот массив с указанным выше кодом, а затем в PHP я хочу обработать этот массив, как ques_5 является ключом, а 9 становится значением для этого ключа.

11
Mahmood Rehman

Вы можете передать данные в скрипт PHP как JSON объект. Предположим, что ваш JSON-объект похож на:

var stuff ={'key1':'value1','key2':'value2'};

Вы можете передать этот объект в код php двумя способами:

1. Передайте объект в виде строки:

Звонок AJAX:

$.ajax({
    type    : 'POST',
    url     : 'result.php',
    data    : {result:JSON.stringify(stuff)},
    success : function(response) {
        alert(response);
    }    
});

Вы можете обрабатывать данные, переданные в result.php как:

$data    = $_POST["result"];
$data    = json_decode("$data", true);

//just echo an item in the array
echo "key1 : ".$data["key1"];

2. Передайте объект напрямую:

Звонок AJAX:

$.ajax({
    type    : 'POST',
    url     : 'result.php',
    data    : stuff,
    success : function(response) {
        alert(response);
    }    
});

Обрабатывать данные непосредственно в result.php из массива $_POST как:

//just echo an item in the array
echo "key1 : ".$_POST["key1"];

Здесь я предлагаю второй метод. Но вы должны попробовать оба :-)

23
Sherin Jose

Если вы хотите отправить пары ключ-значение, что я и вижу, было бы лучше использовать библиотеку PHP JSON (как эта ... http://php.net/manual/en /book.json.php )

Затем вы можете отправить фактические пары ключ-значение, используя формат JSON, например ... {"Ques_5": "19", "Ques_4": "19"} 

2
FloatingCoder

Попробуй это

var array = ["9", "ques_5", "19", "ques_4"];
console.log(array.join(","));

приведенный выше код выведет строку с разделенной запятой, как 9,ques_5,19,ques_4then, затем вставьте ее в вызов ajax.

И затем в php explode эту строку.

Другие возможные решения.

Первый

var obj = { 'item1': 'value1', 'item2': 'value2' };

$.ajax(
{
    type:  'post', 
    cache:  false ,
    url:  'test/result.php',
    data:  { result : JSON.stringify(obj) },
    success: function(resp)
    {
        alert(resp);
    } 
});

Второй

var a = $.JSON.encode(obj);

$.ajax(
{
    type:  'post', 
    cache:  false ,
    url:  'test/result.php',
    data:  { result : a },
    success: function(resp)
    {
        alert(resp);
    } 
});

In PHP File

<?php
    $json = $_POST["data"]
    var_dump(json_decode($json));
?>
2
Dipesh Parmar

Вы можете отправить формат array in json на php, а затем использовать функцию json_decode для возврата массива, например

При вызове ajax вы должны отправить json, для этого вам нужно сначала создать массив значений, чтобы вы получили его в правильной форме , Чтобы вы json выглядели как {"ques_5":"9","ques_4":19}

и использовать в вызове AJAX

 data: JSON.stringify(`your created json`),
 contentType: "application/json; charset=utf-8",
 dataType: "json",

В PHP это выглядит так

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>
1
Dinkar Thakur

Я хотел бы поделиться полным примером, который работает для меня, чтобы избежать создания каждой функции JavaScript для каждой функции PHP

// на стороне HTML простой вызов javascript по ссылке

 <a href="javascript:CargaZona('democonllamada', 'tituloprin', {'key1':'value1','key2':'value2'})" >test</a>
<div id='tituloprin' >php function response here!</div>

// на стороне JavaScript

 function CargaZona(fc, div, params) {
    var destino = "#" + div;
    var request = $.ajax({
            url : "inc/phpfunc.php",
            type : "POST",
            data : {
                fc : fc,
                params : JSON.stringify(params)
            },
            dataType : "html"
        });

    request.done(function (msg) {
        $(destino).html(msg);
    });

    request.fail(function (jqXHR, textStatus) {
        alert("Request failed: " + textStatus);
    });
}

// на странице phpfunc.php

<?php

$params = "{'key1':'value1','key2':'value2'}"; 
$fc = 'def';
if (isset($_POST['fc']))   {    $fc = $_POST['fc']; }
if (isset($_POST['params']))   {    $params = $_POST['params']; }

switch ($fc) {
    default:
      call_user_func($fc,$params);
}

function democonllamada($params) {
    $params = json_decode("$params", true);
    echo "ok llegaron".$params['key1'];

}

?>
0
Jean Pierre Porre