Отправить массив с запросом 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 – значение для этого ключа.

Вы можете передать данные в 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"]; 

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

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

Затем вы можете отправлять фактические пары значений ключа, используя формат JSON, например … {"ques_5": "19", "ques_4": "19"}

Попробуй это

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

выше код выводит строку с запятой, разделенной как 9,ques_5,19,ques_4 затем вставляет ее в 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)); ?> 

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

В вызове ajax вам нужно отправить 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)); ?> 

Я хотел бы поделиться полным примером, который работает для меня, чтобы не создавать каждую функцию 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']; } ?>