ajax()POST在Nginx/PHP-FPM上使用IE10接收空响应,但在Apache上工作
我使用一个非常简单的ajax()POST在Nginx/PHP-FPM上使用IE10接收空响应,但在Apache上工作,apache,jquery,character-encoding,nginx,internet-explorer-10,Apache,Jquery,Character Encoding,Nginx,Internet Explorer 10,我使用一个非常简单的jquery.ajax()调用从服务器获取一些HTML片段: // Init add lines button $('body').on('click', '.add-lines', function(e) { $.ajax({ type : 'POST', url : $(this).attr('href')+'?ajax=1&addlines=1', data :
jquery.ajax()
调用从服务器获取一些HTML片段:
// Init add lines button
$('body').on('click', '.add-lines', function(e) {
$.ajax({
type : 'POST',
url : $(this).attr('href')+'?ajax=1&addlines=1',
data : $('#quickorder').serialize(),
success : function(data,x,y) {
$('#directorderform').replaceWith(data);
},
dataType : 'html'
});
e.preventDefault();
});
在PHP方面,我基本上是回显一个HTML字符串。jQuery版本是1.8.3
问题出在IE10:虽然它在运行于Apache的服务器A上运行良好,但在运行于Nginx+PHP-FPM的服务器B上运行失败:如果我在服务器B上调试成功
处理程序,我会为数据
获得一个未定义的。在IE开发者工具的网络选项卡中,我可以看到完整的响应和所有标题。它可能会影响其他IE版本,但到目前为止我只能测试IE10
以下是两个响应头:
服务器A,Apache(工作):
服务器B,Nginx+PHP-FPM(失败):
在这两种情况下,身体部位看起来都一样
知道是什么导致了这个问题吗?请同时检查内容类型标题,因为Apache和Nginx正在发送不同的值:
Content-Type: text/html; charset=UTF-8
vs
更新Nginx配置,添加以下行:
charset UTF-8;
我记得不久前在nginx和“分块”传输编码方面遇到了一些问题,可能值得研究一下。谢谢Marian。我以前也试过用chunked\u transfer\u编码。没有区别。仍然让我困惑的是缺少的内容长度
标题。如果chunked关闭,它也会丢失。难以置信!这真的解决了它。谢谢!
Content-Type: text/html; charset=UTF-8
Content-Type: text/html; charset=utf8
charset UTF-8;