我正在与Yii 1合作,当我尝试通过服务器上的json_encode检索省内的城市时,我遇到了一些问题。
当我检索超过30k的记录时会发生错误。
Unknown error 200 . textStatus: parsererror. errorThrown SyntaxError: Unexpected token <"
另一个用例城市&#39;省工作正常。
JSON可容纳的数量是否有限制?
//PHP Code
public function actionGetDinamicCities() {
$code = $_POST['code_province'];
// Busqueda de Registros dependiendo el codigo de Ciudad recibido.
$cities = City::model()->findAll(array('order'=>'city_name',
'condition'=>'state_code=:code_province',
'params'=>array(':code_province'=>$code)
));
// Creacion de un arreglo clave=>valor para un modelo dado
$citiesList = generateList($cities, 'id', 'city_name');
echo json_encode($citiesList);
}
//JQuery Code
$('#Address_id_province').change(function() {
var data = { "code_province" : $(this).val() };
$.ajax({
url: 'GetDinamicCities',
data: data,
type: "post",
dataType: "json",
success: function (data) {
var options = '<option value>Select a City</option>';
console.log(data);
},
error: function (jqXHR, textStatus, errorThrown) {
getError(jqXHR.status, textStatus, errorThrown);
}
});
function getError(status, textStatus, errorThrown) {
switch (status) {
case 404:
console.log('status: File not found. textStatus: ' + textStatus + '. errorThrown: ' + errorThrown);
case 500:
console.log('Status: Server Error. textStatus: ' + textStatus + '. errorThrown: ' + errorThrown);
case 0:
console.log('status: Request aborted. textStatus: ' + textStatus + '. errorThrown: ' + errorThrown);
default:
console.log('Unknown error ' + status+ ' . textStatus: ' + textStatus + '. errorThrown ' + errorThrown);
}
}
更新
这是我用来获取城市的代码。各省。我将键和值分开了,因为Chrome和IE按键对它进行排序,我希望按值进行排序。
$code = $_POST['code_country'];
$states = States::model()->findAll(array('order'=>'state_name',
'condition'=>'country_code=:code',
'params'=>array(':code'=>$code)
));
$statesList = generateList($states, 'state_code', 'state_name');
$statesListSorted = array();
$statesListSorted['k'] = array_keys($statesList);
$statesListSorted['v'] = array_values($statesList);
$json = json_encode($statesListSorted);
echo $json;
从服务器处理答案的javascript类似于城市。
答案 0 :(得分:0)
你的内存不足。两个建议:
memory_limit = 32M
ini_set('memory_limit', '64M');