JQuery AJAX массив для JSON - PullRequest
       1

JQuery AJAX массив для JSON

0 голосов
/ 31 декабря 2011

Если я хочу отправить массив из PHP в JavaScript, я делаю что-то подобное с PHP:

<?php
    $json=array();
    $json['datetime']="Something";
    $json['timestamp']="Something else"
    $encoded=json_encode($json);
    die($encoded);
?>

И это в jQuery / JavaScript (с использованием Ajax):

...
success: function(response){
var chat = jQuery.parseJSON(response);
datetime=chat['datetime'];
timestamp=chat['timestamp'];
...

Мне было интересно узнать обратное.

В jQuery у меня есть этот массив:

data_send['username']=$(".chat_username").val();
data_send['message']=$(".chat_message").val();

Я хочу закодировать этот массив как объект JSON, отправить этот объект через Ajax, а затем взять этот объект из $ _POST / $ _ GET и декодировать его в массив.

Как я могу это сделать?

1 Ответ

2 голосов
/ 31 декабря 2011

Если вы хотите закодировать массив в JSON из Javascript, вы можете использовать JSON.stringify(myarray).

Однако вам не следует делать это, чтобы отправить его в сценарий PHP.

jQueryимеет встроенную поддержку для передачи карты пар ключ-значение в методе POST - просто передайте его как параметр data в $.ajax() или как второй параметр в $.post().

jQuery будетправильно URI кодирует любые небезопасные символы, которые появляются (будь то в ключах или значениях), поэтому в вашем случае вы можете использовать:

var data_send = {
     username: $(".chat_username").val(),
     message:  $(".chat_message").val()
};
$.post(url, data_send, success_handler);

// or $.ajax({url: url, data: data_send, ... });

PHP затем имеет встроенную поддержку чтения этой карты- это $_POST:

<?php
    $username = $_POST['username'];
    $message  = $_POST['message'];
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...