Elxis来自Joomla(PHP)的变种.
nGinx与PHP-FPM通过URL栏触发特定请求时,请求立即执行.但是,当通过ajax(通过jQuery)触发时,相同的请求有一个非常奇怪的行为.
即:首先请求(在媒体管理器上)查看图片细节,将使用Ajax解雇.它记录在浏览器上,但不在服务器上...不仅仅是......经过一段时间40-50秒后,请求出现在服务器上,然后立即响应.
以下所有请求都会立即执行,没问题.只有第一个是粗糙的......
我遇到了麻烦,因为在任何地方都没有记录任何错误:除了第一个到达服务器的请求的延迟之外,一切似乎都很清晰...
它不是路由(站点已经启动并且已经提供了请求),它不是解析(ip在我的/ etc/hosts文件中).
并且在蛋糕上添加一点樱桃,尝试在服务器上捕获数据包(tcpdump)不产生输出:请求还没有在这里...也在客户端上尝试:没有输出 - 至少40秒.. .
这一切都在浏览器上,开发者控制台显示没有错误,只是一个挂起的请求.
这对任何人都响铃吗?
The server:
nginx version: nginx/1.6.2
PHP 5.6.7-1 (cli)
PHP 5.6.7-1 (fpm-fcgi)
Run Code Online (Sandbox Code Playgroud)
jQuery版本1.11
客户端:尝试使用Firefox 39(ubuntu)和Chromium 41
首先,这听起来更像是一个错误,然后是其他任何东西.
我的rails应用程序由Unicorn提供服务.然后,使用Nginx作为反向代理,我使用SSL将应用程序提供给外部世界.
到目前为止这么好,没问题.我正在使用相对路径(Restful path helpers),所以生成它应该没有问题(对于https://www.example.com):
new_entry_path => https://www.example.com/entries/new
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这样做很好.
然而,在控制器中我尝试重定向到"显示"操作(使用资源)时出现问题,假设在成功更新后(假设条目为id 100):
redirect_to @entry, flash: {success: "Entry has been updated"}
Run Code Online (Sandbox Code Playgroud)
要么
redirect_to entry_path(@entry), flash: {success: "Entry has been updated"}
Run Code Online (Sandbox Code Playgroud)
他们都产生了重定向:
http://www.example.com/entries/100 # missing 's' in https...
Run Code Online (Sandbox Code Playgroud)
代替
/entries/100 # implying https://www.example.com/entries/100
Run Code Online (Sandbox Code Playgroud)
据我所知,这只发生在show动作中,仅在控制器重定向中发生.
做一些可怕而恶心的事情,我绕过了这个:
redirect_to entry_url(@entry).sub(/^http\:/,"https:"), flash: {success: "Entry has been updated"}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到类似的东西?任何想法都将被感激地接受......
我正在尝试编写一个元素指令,我将其附加到控制器,以实现类似排序的行为.这是指令
.directive('sorting', function () {
return {
restrict: 'E',
scope: false, // I know I can omit this with no effect
template: function (elem, attr) {
return '<div><a href ng-click="setsort('+"'"+attr.sortkey+"'"+')">'+attr.headtext+'</a></div>'+
'<div ng-show="sortfield=='+"'"+attr.sortkey+"' || sortfield='-"+attr.sortkey+"'"+
'" ng-class="{'+"'sortreverse':sortreverse}"+'">▲</div>';
}
}
});
Run Code Online (Sandbox Code Playgroud)
setsort(sortkey),sortfield并且sortreverse属于控制器的范围.
预期的行为是,▲只有在为指定元素选择了排序时才应显示caret().
排序按计划工作,但插入符号显示在所有排序列中,我得到一个奇怪的错误消息,我没有找到任何可用的反馈.
错误说:
Error: [$parse:lval] Trying to assing a value to a non l-value
http://errors.angularjs.org/1.4.5/$parse/lval
minErr/
[....a whole stacktrace ...]
"<div ng-show="sortfield=='yn_equivalent' || sortfield='-yn_equivalent'" ng-class="{'sortreverse':sortreverse}">"
Run Code Online (Sandbox Code Playgroud)
有趣的事实:错误的第一行实际上是由angularjs拼写错误的(应该assign代替assing)
当被召唤时,最后一行是指令生成的输出的一部分:
<sorting …Run Code Online (Sandbox Code Playgroud)