0

我正在尝试使用 ajax 和 json 从这个 php 中提取数组。我对前端的 ajax 有点熟悉,但是我需要将这些 php 数组中的每一个都放入一个 javascript 数组中,这样我就可以列出一个列表。任何帮助都会很棒。谢谢

<?php

    header('Content-Type: application/json');

    echo '{}';


    function getOptions($selection) {

        switch ($selection) {
            case 'colors':
                $arr = array(
                    0 => 'Red',
                    1 => 'Orange',
                    2 => 'Yellow',
                    3 => 'Green',
                    4 => 'Blue',
                    5 => 'Indigo',
                    6 => 'Violet'
                );
                break;
            case 'dogs':
                $arr = array(
                    0 => 'Labrador Retriever',
                    1 => 'Yorkshire Terrier',
                    2 => 'German Shepherd',
                    3 => 'Golden Retriever',
                    4 => 'Beagle',
                    5 => 'Dachshund',
                    6 => 'Boxer',
                    7 => 'Poodle',
                    8 => 'Shih Tzu',
                    9 => 'Miniature Schnauzer'
                );
                break;
            case 'fruits':
                $arr = array(
                    0 => 'Apples',
                    1 => 'Bananas',
                    2 => 'Cantaloupe',
                    3 => 'Grapefruit',
                    4 => 'Papaya',
                    5 => 'Mango',
                    5 => 'Strawberries',
                    6 => 'Watermelon'
                );
                break;
            case 'plants':
                $arr = array(
                    0 => 'Norfolk Island Pine',
                    1 => 'Peperomia',
                    2 => 'Grape Ivy',
                    3 => 'Fiddleleaf Fig',
                    4 => 'Snake Plant',
                    5 => 'English Ivy',
                    6 => 'Spider Plant',
                    7 => 'Hoya',
                    8 => 'Green Dracaena',
                    9 => 'Pothos'
                );
                break;
            default:
                $arr = array();
        }

        return $arr;

    }
echo json_encode($arr);

?>

这是ajax调用

$.ajax({
                type: 'POST',
                url: 'ajax.php',
                data: 'id=testdata',
                dataType: 'json',
                cache: false,
                success: function(result) {
                    var numbers = result
                    //not sure what to put here to pull separate arrays from the php
                    //should it be something like var colors = result.colors??
                    }           
                }
            });
4

4 回答 4

1

像这样修改你的PHP:

删除该echo '{}';行,并将该行替换echo json_encode($arr);

echo json_encode(array(
  'colors' => getSelections('colors'),
  'dogs'   => getSelections('dogs'),
  'fruits' => getSelections('fruits'),
  'plants' => getSelections('plants')
);

然后在您的 Javascript 中,您可以使用result.colors[3],result.dogs[5]等。

于 2013-06-03T16:48:58.393 回答
0

如果您想将整个结构返回为

{
  "colors": ["Red", "Orange", ...],
  "dogs": ["Lab", "Yorkie", ...], 
  ...
}

然后你可以使用

<?php
header('Content-Type: application/json');
$map = array(
    'colors' => array('Red', 'Orange', 'Yellow', 'Green', 'Blue'),
    'dogs' => array('Labrador Retriever', 'Yorkshire Terrier')
);
echo json_encode($map);

// js
$.ajax({
   type: 'POST',
   url: 'ajax.php',
   data: 'id=testdata',
   dataType: 'json',
   cache: false,
   success: function(result) {
        var numbers = result
        var colors = result.colors; // colors[0], colors[2]
        var dogs = results.dogs;            
   });

如果要将密钥传递给 AJAX 调用,请使用以下命令

<?php
header('Content-Type: application/json');
$map = array(
    'colors' => array('Red', 'Orange', 'Yellow', 'Green', 'Blue'),
    'dogs' => array('Labrador Retriever', 'Yorkshire Terrier')
);
echo json_encode($map[$_POST['field']]);

// js
$.ajax({
   type: 'POST',
   url: 'ajax.php',
   data: 'field=colors',
   dataType: 'json',
   success: function(colors) {
        alert(colors[0] + colors[1] );
   });
于 2013-06-03T16:59:26.860 回答
0

您可以将它们放在对象中,然后 json_encode,然后您可以使用带有 dataType:'json' 的 jquery 并将它们解析回浏览器

于 2013-06-03T16:14:49.443 回答
0

为什么不只使用数组的 json_encode:http: //php.net/manual/en/function.json-encode.php

于 2013-06-03T16:11:55.733 回答