Jquery 无法识别返回的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

我在我们的网站www.phmotories.co.uk/parts/brakes.html上有一个生产和测试环境。在页面的右侧有一组过滤器控件。现在,在测试环境中,这一点非常有效

在页面加载时,对ASP页面进行调用,该页面从数据库返回JSON响应:

[{“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这段代码应该在两种环境下都能工作:)