Во-первых, getJSON
- это вызов get 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
));
Удачи.