一个选择城市的控件,当点了某个城市之后,通过ajax把选中城市的id提交到服务器,查询出该城市的一些信息。
js代码:
function getSelectedCityInfo(id,name){ // window.location.href="index.php?cid="+id+"#templink"; alert(id); alert(name); $.ajax({ type: "GET", url: "index.php", data: { cid: id } }); $("#cityselect").html(name); $.fancybox.close(); }
我用window.location,把当前cityid通过URL传给服务器,在后台用$_GET['cid']完全可以。
就是用ajax请求的时候出问题,好像就没有提交上去,但是用firebug看请求的地址和参数却也完全正确。
后台PHP脚本:
if(isset($_GET["cid"])){ echo "1"; $static["selectedCityInfo"]=getRateByCityID($_GET["cid"]); }
给静态全局变量$static赋值这句根本就没执行,导致我前台在选择了城市之后接受不到任何数据。
但是不用ajax的方式就可以。不知道问题是出在了哪里?
又仔细找了一遍问题所在:
发现后台返回的已经有了我想要的城市信息,那现在问题就是为什么在页面上显示不出来,
我用直接的url请求就可以在页面上显示(smarty模版引擎)。
if(isset($_GET["cid"])){ echo $_GET["cid"]; $static["selectedCityInfo"]=getRateByCityID($_GET["cid"]); }
firebug显示请求后相应的html确实有打印出来的城市id(下图中的“21”就是提交到后台的城市id),而且在页面下边需要城市信息的地方也出现了正确的数据,但这只是在firebug里看到的。页面上没显示。
你用$.ajax函数中的Success方法中获取返回信息呀
$.ajax({ type: "GET", url: "index.php", data: { cid: id },
function (data) {
alert(data);
} });
我的习惯是只要采用get提交就把缓存关了,或者加时间戳,要不出现缓存的几率很大
$.ajax({cache:false *****});