我一直在寻找互联网寻求解决方案。我真的不认为这是特定于语言的,但我在ColdFusion中使用JQuery将Ajax发送到一个可爱的小对话框。此代码适用于许多计算机,不同的服务器,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> </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);
});
});
});
并且在我的环境中......无论数据出现得多么正确,我都会点击.fail()段。
现在重要的是要注意所有ajax对我来说都失败了......不仅仅是这段代码。在过去3 - 4年中工作的旧代码表现出同样的反应异常。
它变得更糟......这才刚刚开始发生。没有重要的安装或更新我知道的Window 8.1和IIS,也没有任何重要的安装软件。我的ajax调用已经停止工作,我找不到任何指向罪魁祸首。
如果你认为这是不可能的......又发生了一件让我觉得我永远不会摆脱这种情况的事情,我应该打包并开始翻转汉堡...我有一个sys-admins为我设置了一个远程桌面环境...他设置了所有的基线,我只是从我们的存储库复制代码并安装了一些工具(其他开发人员使用的工具),最初一切正常......然后有一天,字面意思是突然出现(我知道,我知道你有多少次听过这个),它停止工作。
我愿意搜索任何东西,卸载一些东西并重新安装(完全吹掉因为上面的远程桌面测试不是一个好选择),安装一些东西......但对于我的生活我无法想象发生了什么会造成如此奇怪的情况,使用相同的代码和非常相似的环境的其他人无法复制。
我没有屏住呼吸......但如果没有其他原因,我不得不在这里放些东西。
- 更多信息 -
它究竟返回了什么?
每次都是我期望的JSON,除了前面有一个CR + LF ......现在想到为什么因为其他盒子上的相同代码不会产生额外的空白
您是否都使用相同的浏览器?你有特定的错误吗?
每个浏览器,当前版本(IE,FIREFOX,CHROME和是,甚至是Safari)并且作为问题的一部分,没有抛出错误。 Ajax,就像我的示例代码一样,正在访问代码的.fail()段但是数据中没有错误
您使用的是什么浏览器?控制台中是否有任何错误?
浏览器回答上面没有,控制台没有错误,只是一个稳定的黄金成功的GET结果,其中包含数据
您使用的是最新发布的jQuery吗?如果没有,我会尝试更新版本或最新版本。
来回一个版本(目前最近没有发布),但是再一次,这个确切的代码可以在其它任何地方使用它的捆绑式JQuery版本......并且没有错误响应,就JQuery而言,它很开心
“抑制空格”cfadmin设置是否在其他环境中启用,但不在本地启用?
绝对禁用甚至延伸了想象力并进入CF代码并确保创建数据的方法都正确设置输出(组件和方法)并禁用CF管理员中的所有JSON前缀。还检查所有相关的CF管理员设置与其他工作的服务器,它们都是相同的...加上......缺乏解释为什么它只是在这个盒子上工作,并且当这些设置都没有改变时突然失败。
那就是CF 10和CF 11。