簡體   English   中英

Rails - AJAX PUT或PATCH多次觸發

[英]Rails - AJAX PUT or PATCH firing multiple times

我正在嘗試通過AJAX(使用PUTPATCH請求)更新資源的屬性,並且請求被多次觸發。

我正在使用Angular JS和jQuery。

HTML模板

這是我的HTML模板的樣子 -

<span id="test" ng-click="setValue('test')"></span>

Javascript代碼

這是我的Angular JS代碼的樣子 -

$scope.setValue = function(value){
    $.ajax({
       method: 'PATCH' // or PUT,
       url: 'resources/' + $scope.resourceId,
       data: {
          test: value
       }
    }).success(function(response){
        console.log(response);
    });
};

Rails代碼

以下是我的控制器更新方法的樣子 -

def update
   @resource.update(resource_params)
   respond_with(@resource)
end

截圖

AJAX請求被多次觸發(接近15次)。 見下面的截圖 -

在此輸入圖像描述

通過簡單地將PATCH (或PUT )請求更改為POST ,調用僅被觸發一次。 見下面的截圖 -

在此輸入圖像描述

是否有任何理由為什么PUT請求被多次觸發,而POST請求只被觸發一次?

即使PUT請求正確更新了值。 我想防止它被多次發射。 有沒有辦法做到這一點? (不改變路線或控制器方法)

首先要注意的是:POST請求中的截圖返回404,很可能是因為您沒有將控制器操作更新為create而不是更新。 (確保您的路線也設置為匹配)。 由於沒有動作,Rails返回404,它將停止處理。

這很重要,因為您的PATCH屏幕截圖看起來可能無限重定向到自身。 每個PATCH請求都會得到一個HTTP 302重定向作為響應,因為你得到了很多,我的猜測是它重定向到自己(相同的URL,或重定向到相同控制器方法的URL ...或其他一些導致任何URL重定向的中間件)。

因此,如果您更改了控制器操作和路由以允許POST,我打賭您將獲得與PATCH相同的多個請求和重定向。

這解決了一個謎。 接下來是問你為什么要獲得無限重定向。 我無法從可用信息中回答這個問題,但這可能會讓您開始使用解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM