您好 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', }); } `
感谢您的时间和耐心,我不是这方面的专家(不完全是新手,但很接近......)。