JQUERY AJAX - 功能成功返回" UNDEFINED"用CFC查询

时间:2015-09-17 08:52:17

标签: jquery ajax coldfusion

我在表单中实现AJAX以链接下拉列表时遇到问题。我使用ColdFusion(CFC文件)从查询中检索结果。该函数正在运行,我以JSON格式检索结果:

[ { "ID" : "APEX",
    "VALUE" : "Apex (not defined)"
  },
  { "ID" : "AVI",
    "VALUE" : "Plane (not defined)"
  },
  { "ID" : "TRAIN 1",
    "VALUE" : "Train 1st class"
  },
  { "ID" : "VOIT",
    "VALUE" : "Car"
  },
  { "ID" : "ZERO",
    "VALUE" : "Cost 0 (not defined)"
  }
]

我不知道这个JSON是否正确才能在jquery脚本中使用。

在JQUERY脚本中,success函数无法检索这些结果,console.log(result)显示" undefined"。如果我尝试console.log(result.length),则会显示错误。

在Firebug中,我可以看到查询已经完成,响应是下面的JSON。

我的CFM文件中的JQuery脚本:

$().ready(function() {
     $.ajax({
        type:   'GET',
        url:    'transport.cfc',
        data: {
            method:     'getTransports',
            CITY_TO:    'LUX',
            CITY_FROM:  'UWP'
        },
        dataType:       'json',
        contentType:    'application/json',

        success: function(result) {
            var select = $("##transp");
            select.empty();
            select.append(
                new Option('Select transport', '-1')
            );
            console.log(result) // displays "undifined"

            /* GENERATES BUG
            $.each(result, function(i, item) {
                select.append(
                    new Option(item.ID, item.VALUE)
                );
            });*/
        },

        error: function(xhr, message) {
            alert('ajax request failed');
            console.log(xhr, message);
        }
     });
});

我使用的是Jquery 1.1.2版。我试着使用最后一个版本,但结果是一样的。我还尝试在论坛上提出以下解决方案:"用jsonp"替换json。通过这样做,结果显示在控制台中,感谢console.log(result),但循环each不正常,错误' ajax请求失败'出现

我不知道如何解决问题,任何人都可以帮我解决吗?

1 个答案:

答案 0 :(得分:1)

我发布了using Ajax with CFC functions的综合答案。我认为你所缺失的只是函数的returnformat

我发布的Ajax代码:

$.ajax({
    async : true,
    type : 'POST',
    dataType : 'json',
    url : 'test.cfc?method=testing&returnformat=json',
    data : {
        a : $('#a').val(),
        b : $('#b').val()
    },
    success : function(data, textStatus) {
        $('#data').val(JSON.stringify(data));
    }
});

您正在data数据包中传递方法名称。尝试在那里添加returnformat

url: 'transport.cfc',
data: {
    method:     'getTransports',
    returnformat:  'json',
    CITY_TO:    'LUX',
    CITY_FROM:  'UWP'
},

这应该确保从函数返回的内容具有正确的content-type