PHP 和 ajax - 使用数组

PHP with ajax - Working with array

我很困惑。自己花了大约两个小时来解决这个问题,快要发疯了!

我有一个简单的 ajax 调用,获取一个数组,并将其作为选项添加到 select。 这是有效的:

AJAX:

<script>
$("#press").click(function(){
$.ajax({
    type: 'POST',
    url: 'ajax.php',
    cache: false,
    success: function(result) {
      if(result){
        $('#options').empty();      
        resultObj = eval (result);
        $.each(resultObj, function( index, value ){
            var option = $('<option></option>').attr("value", value).text(value);
            $("#options").append(option);
        });
      }
    }
});
});
</script>

并且来自 ajax.php:

$array = array("a","b","c","d");
echo json_encode( $array );

这是有效的,给了我:

<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>

我想不通的是如何向下拉菜单添加值,所以我得到了

<option value="1">a</option>
<option value="2">b</option>
<option value="3">c</option>

我需要有关如何更改数组的帮助,并且 ajax 正确调用以包含每个字母的值。 假设 a=1, b=2, c=3, d=4

任何帮助都将非常有用!

如果我正确理解你的问题,你想将 select 元素的 option 值更改为数值。

JQuery 的 each 函数的回调已经通过 index 参数提供了它们。

在 php 端格式化你的 $array 变量,如

$array = array(1 => "a", 2 => "b", 3 => "c", 4 => "d");

然后使用索引作为值。

var option = $('<option></option>').attr("value", index).text(value);

如果您将数组格式化为 PHP 类似这样...

$array = array(
    array("display" => "a", "value" => 1),
    array("display" => "b", "value" => 2),
    array("display" => "c", "value" => 3),
    array("display" => "d", "value" => 4)
);
echo json_encode( $array );

然后您可以像这样 jQuery...

$.each(resultObj, function( index, row ){
    var option = $('<option></option>').attr("value", row.value).text(row.display);
    $("#options").append(option);
});

使用jQuery.parseJSON函数

   <?php
    $array = array("a" => 1,"b" => 2,"c" => 3,"d" => 4);
    echo json_encode( $array );
    ?>

if(result){
    resultObj = jQuery.parseJSON(result);
    $.each(resultObj, function( index, value ){
        var option = $('<option></option>').attr("value", value).text(index);
    });
}