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);
});
}
我很困惑。自己花了大约两个小时来解决这个问题,快要发疯了!
我有一个简单的 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);
});
}