我正在尝试使用jQuery的getJSON函数发送一个变量,但它似乎没有通过,我也不确定如何获取我刚刚在等待的PHP文件中发送的变量,我只是引用它通过我发送的名称,例如,如果我发送一个名为'test'
的变量,我可以这样得到它,$_POST['test']
在另一边吗?或者究竟是如何运作的?
我正在尝试使用下面的方法填充下拉列表,我们将非常感谢有关改进代码的任何建议!
这是PHP返回的内容:
[{"city":"One"},{"city":"Two"},{"city":"Three"},{"city":"Four"}]
jQuery的:
//get the cities
$("#province").live('change', function(){
var test = $('#province').val();
//alert(test);
$.getJSON("cities.php", test, function(data){
//clean out the select list
$('#city').html('');
//run the loop to populate the drop down list
$.each(data, function(i, data) {
var city = data.city;
$('#city').append(
$('<option></option>').html(city)
);
});
});
});
PHP:
$province = $_POST['test'];
//mySQL query here
$myarray = mysql_fetch_array($query, true);
$string = explode(',', $myarray['cities']);
foreach($string as $key=>$value) {
$string[$key] = array('city'=>$value);
}
$json = json_encode($string);
echo $json;
我可能做错了什么?
提前Thanx!
答案 0 :(得分:3)
首先,getJSON
是一个获取 ajax调用。因此,您应该期望使用getJSON
传递的数据最终显示在$_GET
中,显然是$_REQUEST
,而不是$_POST
。其次,您必须传递一个描述数据地图的对象,该数据将反映在关联数组,$_GET
中。
所以你的代码应该是......
$.getJSON("cities.php", { test: $('#province').val() }, function (data) {
通过它,您可以在PHP端访问$_GET['test']
我可以提供一些改进......(未经测试)
//get the cities
$("#province").live('change', function(){
$.getJSON("cities.php", { test: $('#province').val() }, function(data){
if(!data.ok) {
alert('Error getting cities. Please try again later.');
}
var markup = '', len = data.cities.length;
for(var i = 0; i < len; i++) {
markup += '<option>' + data.cities[i] + '</option>';
}
$('#city').html(markup);
});
});
和php
$province = $_POST['test'];
//mySQL query here
$myarray = mysql_fetch_array($query, true);
$cities = explode(',', $myarray['cities']);
echo json_encode(array(
'ok' => true,
'cities' => cities
));
祝你好运。