Jquery 无法识别返回的json响应
我在我们的网站www.phmotories.co.uk/parts/brakes.html上有一个生产和测试环境。在页面的右侧有一组过滤器控件。现在,在测试环境中,这一点非常有效 在页面加载时,对ASP页面进行调用,该页面从数据库返回JSON响应:Jquery 无法识别返回的json响应,jquery,mysql,json,asp-classic,Jquery,Mysql,Json,Asp Classic,我在我们的网站www.phmotories.co.uk/parts/brakes.html上有一个生产和测试环境。在页面的右侧有一组过滤器控件。现在,在测试环境中,这一点非常有效 在页面加载时,对ASP页面进行调用,该页面从数据库返回JSON响应: [{“value”:“ktm”}] 函数调用如下所示: function loadFilters(p,l,c) { $.post('../supportScripts/productFilters.asp',{ level: l, p
[{“value”:“ktm”}]
函数调用如下所示:
function loadFilters(p,l,c) {
$.post('../supportScripts/productFilters.asp',{
level: l,
productManufacturer: $("#partMan").val(),
productGroup: p,
bikeModel: $("#partBM").val(),
modelYear: $("#partMY").val(),
ajax: 'false'}, function(data) {
var sel = $("#" + c);
var s = jQuery.parseJSON(data);
sel.empty();
sel.append('<option value=\'0\'>Please Select</option>');
for (var i=0; i<s.length; i++) {
sel.append('<option value="' + s[i].value + '">' + s[i].value.toUpperCase() + '</option>');
}
});
}
函数加载过滤器(p、l、c){
$.post(“../supportScripts/productFilters.asp”{
级别:l,
产品制造商:$(“#零件工”).val(),
产品组:p,
bikeModel:$(“#partBM”).val(),
年款:$(“#partMY”).val(),
ajax:'false'},函数(数据){
var sel=$(“#”+c);
var s=jQuery.parseJSON(数据);
sel.empty();
sel.append('请选择');
对于(var i=0;i您不需要使用jQuery.parseJSON
。您的服务器正在返回内容类型:application/json
,因此jQuery正在为您解析它。它使用内容类型来“智能地猜测”AJAX调用的返回类型
您应该做的是将第四个参数传递给$.post
,'json'
。这会告诉jQuery您需要json,并为您解析它,即使内容类型
是错误的
function loadFilters(p,l,c) {
$.post('../supportScripts/productFilters.asp',{
level: l,
productManufacturer: $("#partMan").val(),
productGroup: p,
bikeModel: $("#partBM").val(),
modelYear: $("#partMY").val(),
ajax: 'false'
}, function(data) {
var sel = $("#" + c);
sel.empty();
sel.append('<option value="0">Please Select</option>');
for (var i=0; i < data.length; i++) {
sel.append('<option value="' + data[i].value + '">' + data[i].value.toUpperCase() + '</option>');
}
}, 'json');
}
函数加载过滤器(p、l、c){
$.post(“../supportScripts/productFilters.asp”{
级别:l,
产品制造商:$(“#零件工”).val(),
产品组:p,
bikeModel:$(“#partBM”).val(),
年款:$(“#partMY”).val(),
阿贾克斯:“错”
},函数(数据){
var sel=$(“#”+c);
sel.empty();
sel.append('请选择');
对于(变量i=0;i
有效您确定数据看起来完全像:[{“value”:“ktm”}]
?两台服务器上的数据值是否相同?是的,因此两种环境中的响应完全相同。您知道为什么它在生产环境中不工作,而在测试环境中工作吗?@GrahamCole:测试环境发送了什么内容类型
?如果不是应用程序/json
(可能是text/html
),那么jQuery不会为您解析它,它会返回原始字符串而不是对象。好的,我早上到办公室时会检查。非常感谢您的帮助!不客气!:-D这段代码应该在两种环境下都能工作:)