Asw*_*nan 5 javascript ajax jquery ruby-on-rails angularjs
我正在尝试通过AJAX(使用PUT
或PATCH
请求)更新资源的属性,并且请求被多次触发.
我正在使用Angular JS和jQuery.
这是我的HTML模板的样子 -
<span id="test" ng-click="setValue('test')"></span>
Run Code Online (Sandbox Code Playgroud)
这是我的Angular JS代码的样子 -
$scope.setValue = function(value){
$.ajax({
method: 'PATCH' // or PUT,
url: 'resources/' + $scope.resourceId,
data: {
test: value
}
}).success(function(response){
console.log(response);
});
};
Run Code Online (Sandbox Code Playgroud)
以下是我的控制器更新方法的样子 -
def update
@resource.update(resource_params)
respond_with(@resource)
end
Run Code Online (Sandbox Code Playgroud)
AJAX请求被多次触发(接近15次).见下面的截图 -
通过简单地将PATCH
(或PUT
)请求更改为POST
,调用仅被触发一次.见下面的截图 -
是否有任何理由为什么PUT
请求被多次触发,而POST
请求只被触发一次?
即使PUT
请求正确更新了值.我想防止它被多次发射.有没有办法做到这一点?(不改变路线或控制器方法)
首先要注意的是:您的 POST 请求的屏幕截图返回 404,很可能是因为您没有将控制器操作更新为create
“更新”。(确保您的路线也设置为匹配)。由于没有任何操作,Rails 返回 404,并且它将停止处理。
这很重要,因为您的 PATCH 屏幕截图看起来可能无限地重定向到自身。每个 PATCH 请求都会收到 HTTP 302 重定向作为响应,并且由于您收到了很多此类请求,我的猜测是它正在重定向到自身(相同的 URL,或者重定向到相同控制器方法的 URL...或其他导致任何 URL 重定向的中间件)。
因此,如果您更改了控制器操作和路由以允许 POST,我敢打赌您会得到与使用 PATCH 获得的相同的多个请求和重定向。
这就解开了一个谜团。接下来是问为什么你会得到无限重定向。我无法从现有信息中回答这个问题,但这可能会帮助您开始寻找解决方案。
归档时间: |
|
查看次数: |
477 次 |
最近记录: |