您好 stackoverflow 开发人员,首先,很抱歉,如果我找不到解决方案,但我已经尝试了一段时间。我不确定我的方法是否是最好的,所以,如果有 AJAX 和/JSON 的替代方案,请随时提出建议。
我正在创建一个旅游指南网站,注册用户将根据地区和州包括他们的度假村、餐馆和旅游景点。我正在使用 Joomla!和 Seblod (使用一些自定义 PHP、MySQL、Javascript 和 AJAX)。由于我不想手动创建 27 个动态选择,我一直在尝试使用 PHP/AJAX/JSON/JQuery 选择注册海滩列表(必须与度假村和旅游景点相关)。
除了填充海滩列表外,一切正常,我不知道问题出在哪里。我尝试了多种方法来追加、创建或添加选项,但没有任何反应。PHP/JSON 结果是:
`
[{"id":"17","title":"Porto+de+Galinhas"},{"id":"18","title":"Serrambi"},{"id":"19", "title":"Tamandar%E9"}]
`
这是这个 PHP 脚本的结果:
`
if($_GET['q'] == '海滩'){
$praiaSQL = sprintf("SELECT * FROM vp_content AS c LEFT JOIN vp_cck_store_item_content AS v ON c.id = v.id WHERE c.catid = 10 AND v.cck = 'praia' AND v.venue_state = '%s' ORDER BY c.title ASC;", $_GET['s']);
$query = mysqli_query($connection, $praiaSQL);
$普拉亚 = 数组();
而($results = mysqli_fetch_assoc($query)){
array_push($praia, array('id' => $results['id'], 'title' => urlencode($results['title'])));
}
回声 json_encode($praia);
}
`
我还需要一个处理重音字符的解决方案。我在这里尝试 urlencode 并在 JQuery 中解码,但可能是问题所在。当我将其保留为原始数据时,当有重音字符时,结果项为空。
这是处理结果的相关 JQuery(其中 x = 选择和 u = 获取 AJAX JSON 结果的 URL - 我已经评论了代码中的问题所在):
`
函数 setBeachList(x,u){
var theDiv = "#cck1r_" + x;
var theSelect = "#" + x;
$j(theSelect).children("option:not(:first)").remove();
$j.ajax({
网址:你,
contentType: "应用程序/json;charset=UTF-8",
成功:函数(数据){
如果(数据。长度){
/****
这就是我卡住的地方,因为我找不到方法来确保
数据实际上正在被处理/处理。
我已经尝试过警报和各种其他选项来填充
选择。
我知道它被调用是因为 before: and after: 函数
在工作中。
*****/
/*
$j.each(数据,函数(k,v){
var o = 新选项();
var newTitle = urldecode(v.title);
$j(o).html(newTitle).val(v.id);
$j(theSelect).append(o);
});
*/
var htm = '';
for (var i = 0; i '+urldecode(data[i].title)+'';
}
$j(theSelect).html(htm);
}
},
发送前:函数(){
$j(theDiv).hide();
},
完成:函数(){
$j(theDiv).show();
},
数据类型:'json',
});
}
`
感谢您的时间和耐心,我不是这方面的专家(不完全是新手,但很接近......)。