Jquery 当Ajax工作但不工作时';T

Jquery 当Ajax工作但不工作时';T,jquery,ajax,coldfusion,Jquery,Ajax,Coldfusion,我一直在网上搜寻解决办法。我真的不认为这是特定于语言的,但我正在使用JQuery到Ajax的ColdFusion中创建一个可爱的小对话框。这段代码可以在许多计算机、不同的服务器、IIS和Apache上运行……但对我来说,没有。Ajax调用工作得很好,但在代码中,如果调用失败,我应该只看到一个“OK”脚本框弹出。对于所有这些调用,我只看到了一些东西…但是当我深入实际调用并查看ajax发送和接收的内容时,一切都是正确的…有一件东西由于某种原因在我的计算机上不存在,返回的JSON数据中有一些前面的空格

我一直在网上搜寻解决办法。我真的不认为这是特定于语言的,但我正在使用JQuery到Ajax的ColdFusion中创建一个可爱的小对话框。这段代码可以在许多计算机、不同的服务器、IIS和Apache上运行……但对我来说,没有。Ajax调用工作得很好,但在代码中,如果调用失败,我应该只看到一个“OK”脚本框弹出。对于所有这些调用,我只看到了一些东西…但是当我深入实际调用并查看ajax发送和接收的内容时,一切都是正确的…有一件东西由于某种原因在我的计算机上不存在,返回的JSON数据中有一些前面的空格…没有其他人有这个问题…但是我们都运行相同的代码。几乎我所有的研究都指出我可能会做错的事情会导致ajax失败……但从技术上讲,这不是问题所在……ajax工作得很好,甚至返回了我预期的99%。我必须相信,有一些环境上的不同或“外部”(至少是代码的一部分)的东西正在影响结果,所以它们被视为无效的……但是,同样的代码在许多“其他地方”都能完美地工作。下面是这段非常简单的代码的要点:

$(document).ready(function() {
    $('##viewaction').on('shown.bs.modal', function (e) {
        $('##records-table').empty();
        var linkSource = $(e.relatedTarget);// link that triggered modal
        var actionId = linkSource.data('action-id');
        var actionName = linkSource.data('action');
        $.ajax({
            type: "GET",
            dataType: 'json',
            cache: false,
            url: 'portal/plugins/test/AjaxProxy.cfc',
            data: { method: "ViewActionRecord", actionId: actionId }
        })
        .done(function( results ) {
            response = eval(results);
            $('##action-name').text(actionName);
            $.each(response.DATA, function(i, item) {
                // undefined is less likely but object will appear if the value in our struct converted to json is a blank
                // this ultimately only works if the struct we are delivering is flat...otherwise, objects could be valid
                // values here...warning for future "nested" views of data
                if(typeof item =="undefined" || typeof item == "object") {
                    $('<tr>').html("<td>" + i + "</td><td>&nbsp;</td>").appendTo('##records-table');
                } else {
                    $('<tr>').html("<td>" + i + "</td><td>" + item + "</td>").appendTo('##records-table');
                };
            });
        })
        .fail(function(e) {
            //alert(e.responseText);
            alert(e.statusText);
        });
    });
});
$(文档).ready(函数(){
$('##viewaction').on('show.bs.modal',函数(e){
$(“##记录表”).empty();
var linkSource=$(e.relatedTarget);//触发模式的链接
var actionId=linkSource.data('action-id');
var actionName=linkSource.data('action');
$.ajax({
键入:“获取”,
数据类型:“json”,
cache:false,
url:'portal/plugins/test/AjaxProxy.cfc',
数据:{方法:“ViewActionRecord”,actionId:actionId}
})
.完成(功能(结果){
响应=评估(结果);
$('##操作名称')。文本(操作名称);
$。每个(响应。数据,功能(i,项目){
//未定义的可能性较小,但如果转换为json的结构中的值为空,则会出现object
//这最终只有在我们交付的结构是平面的情况下才有效……否则,对象可能是有效的
//此处的值…警告未来数据的“嵌套”视图
如果(项目类型==“未定义”| |项目类型==“对象”){
$(“”).html(“+i+”).appendTo(“##记录表”);
}否则{
$(“”).html(“+i+”“+item+”).appendTo(“##记录表”);
};
});
})
.失败(功能(e){
//警报(如responseText);
警报(如状态文本);
});
});
});
在我的环境中……无论数据看起来多么正确,我都会点击.fail()段

现在需要注意的是,所有ajax对我来说都失败了……不仅仅是这段代码。过去3-4年工作的旧代码表现出同样的响应异常

更糟的是,这一切才刚刚开始。我知道Windows 8.1和IIS没有重大的安装或更新,最近也没有安装任何重要的软件。我所有的ajax调用都停止了工作,我找不到任何指向罪魁祸首的东西

如果你认为这是不可能的…又发生了一件事,让我觉得我永远都不会摆脱它,我应该收拾好东西开始烙汉堡…我让我们的一个系统管理员为我设置了一个远程桌面环境…他设置了所有的基线,我只是从我们的存储库复制代码并安装了一些工具(与其他开发人员使用的工具相同)最初一切正常……然后有一天,突然(我知道,我知道你听过多少次),它停止了工作

我愿意搜索任何东西,卸载一些东西并重新安装(完全吹走不是一个好的选择,因为上面的远程桌面测试),安装一些东西…但就我的一生而言,我不知道发生了什么事情,会造成如此奇怪的情况,其他人无法使用相同的代码和非常相似的环境复制这种情况

我没有屏住呼吸……但我不得不在这里放点东西,如果不是出于尽职调查的原因

--更多信息--


它究竟返回什么?

正是我期望的JSON,每次都是,除了前面有一个CR+LF…现在想想为什么,因为其他框上的相同代码不会产生额外的空格


你们都在使用同一个浏览器吗?你们是否遇到了特定的错误?

每个浏览器、当前版本(即FIREFOX、CHROME和yes,甚至Safari)以及作为问题的一部分,都没有抛出错误。Ajax与我的示例代码一样,正在命中代码的.fail()段,但数据中没有错误


您使用的浏览器是什么?控制台中是否有任何错误?

浏览器回答了上面的问题,没有,控制台中没有错误,只是一个纯金的成功结果,其中包含数据


您使用的是最新发布的jQuery吗?如果不是,我会尝试更新或最新版本。

在一个版本中来回运行(目前不是最新发布的),但同样,这段代码在其他任何地方都可以使用它捆绑的JQuery verison…并且没有错误响应,就JQuery而言,它很高兴

是否在其他环境中启用了“抑制空白”cfadmin设置,但在本地环境中未启用该设置?

完全禁用,甚至扩展了想象力,进入CF代码,确保创建数据的方法都正确设置了输出(组件和方法)并且CF admin中的所有JSON前缀都被禁用。还需要检查所有相关的CF admin设置与其他工作的服务器,它们都是相同的…另外…缺少解释