AJAX实现二级联动问题
本帖最后由 showbo 于 2013-08-10 13:46:24 编辑 现在需要做一个下拉列表二级联动,但调用AJAX总是出错,希望大家帮忙看看。
脚本
$.ajax
(
{
type: "post",
url: urlAdd,
dataType: "jeson", //传输的数据类型
contentType: "application/json",
data: '{"state":"' + val + '"}',
error: function (x, e) {
alert(x.responseText);
return false;
},
success: function (data) {
alert("OK");
var i;
var json = eval(data);
$("#" + item).find("option").remove();
$("#" + item).append("<option value='0' selected='selected'>----请选择----</option>");
if (json != null) {
for (i = 0; i < json.length; i++) {
$("#" + item).append($("<option></option>").val(json[i].c_code).html(json[i].c_name));
};
$("#<%=hfCenter.ClientID %>").val("0");
}
}
}
);
[解决办法]
dataType: "jeson", //传输的数据类型
这是错误的!
1、dataType 表示的是回传的数据类型,如果 dataType: "json" 那么回传的数据会自动转换为对象
2、jq 没有 jeson 这个数据类型,所以走了 error
contentType: "application/json"
这个头声明将导致传输的数据在服务端不能用正常的方法接收
它使 CONTENT_TYPE 环境变量的值为 application/json 而默认是 application/x-www-form-urlencoded
你需要自行解释传入的数据流
data: '{"state":"' + val + '"}'
发送的数据相当于无格式字符串,服务端无法用正常手段解析
应写作
data: {"state": val }