как передать эти строки из PHP в JavaScript - PullRequest
1 голос
/ 04 июля 2010

У меня в приложении 4 строки, которые я хочу передать в свой файл js

$a1='[10,20,13,14]';
$a2='[17,15,14,16]';
$a3='[18,24,16,17]';
$a4='[15,54,18,27]';

echo $a1.",".$a2.",".$a3.",".$a4;

и мой код JavaScript

$.ajax({
           type: "POST",
           dataType: "json",
           url: "loaddata.php",
               success: function(data)
            {
           alert(data); //alert 15,54,18,27


          }
     });

я могу получить только строку $ a4, и я не могу получить другую строку

как я могу передать эти 4 строки в php и установить эти 4 переменные в javascript

спасибо;

Ответы [ 5 ]

5 голосов
/ 04 июля 2010

Кодируйте их как JSON.

На стороне PHP:

echo json_encode(array("a1" => $a1, "a2" => $a2, "a3" => $a3, "a4" => $a4));

На стороне JavaScript:

$.ajax({
    type: "POST",
    dataType: "json",
    url: "loaddata.php",
    success: function(data) {
        var a1=data.a1;
        var a2=data.a2;
        var a3=data.a3;
        var a4=data.a4;
        // do something with a1, a2, a3 and a4
    }
});

И если вы хотите a1,a2, a3 и a4, чтобы быть массивами чисел, а не строк, содержащих числа, просто JSON декодирует строки на стороне PHP перед отправкой:

echo json_encode(array(
    "a1" => json_decode($a1),
    "a2" => json_decode($a2),
    "a3" => json_decode($a3),
    "a4" => json_decode($a4)
));
1 голос
/ 04 июля 2010

Используйте json_encode на стороне php и передавайте данные обратно таким образом http://us3.php.net/manual/en/function.json-encode.php

0 голосов
/ 04 июля 2010
$a1='[10,20,13,14]';
$a2='[17,15,14,16]';
$a3='[18,24,16,17]';
$a4='[15,54,18,27]';

echo $a1.",".$a2.",".$a3.",".$a4;

вернется

[10,20,13,14],[17,15,14,16],[18,24,16,17],[15,54,18,27]

это недопустимая строка JSON.

Вы можете вернуть объект, который содержит массив массивов, например:

echo "[".$a1.",".$a2.",".$a3.",".$a4."]";
// => [[10,20,13,14],[17,15,14,16],[18,24,16,17],[15,54,18,27]]

или вы можете вернуть объект с именованными ключами для доступа к различным массивам.

echo "{a1:".$a1.",a2:".$a2.",a3:".$a3",a4:".$a4."};
// => {a1:[10,20,13,14], a2:[17,15,14,16], a3:[18,24,16,17], a4:[15,54,18,27]}

Или даже много масла: не создавайте строку JSON самостоятельно, а вместо этого используйте PHP json_encode:

$a1=array(10,20,13,14);
$a2=array(17,15,14,16);
$a3=array(18,24,16,17);
$a4=array(15,54,18,27);

echo json_encode(array($a1,$a2,$a3,$a4));
// => [[10,20,13,14],[17,15,14,16],[18,24,16,17],[15,54,18,27]]
// or if you want an associative array
echo json_encode(array("a1" => $a1, "a2" => $a2, "a3"=> $a3, "a4" => $a4));
// => {a1:[10,20,13,14], a2:[17,15,14,16], a3:[18,24,16,17], a4:[15,54,18,27]}
0 голосов
/ 04 июля 2010

Используйте метод serialize (). Передайте переменные в поле ввода и:

$.post("loaddata.php", $("#ajaxform").serialize(), function(data){
  //
});
0 голосов
/ 04 июля 2010
return "{ A1: '[10,20,13,14]', A2: '[17,15,14,16]', A3: '[18,24,16,17]', A4: '[15,54,18,27]' }";

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

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