2013-12-18 77 views
0

我正在進行Ajax調用,以將字段,對象和數組的集合發佈到PHP。 10次​​中有9次這個工作很好。但是,當多次提交相同請求(不更改數據)時,請求將偶爾以Content-Type:text/plain或text/html發送,而不是application/x-www-form-urlencoded,從而導致問題出現我的PHP。 JSON可能更適合,但任何人都可以想到爲什麼會發生這種情況?jQuery Ajax POST更改Firefox中的內容類型

  • 這不是一個跨域請求。
  • 這隻發生在Firefox。
  • 我不認爲我需要指定的內容類型,因爲Ajax將默認。
  • 我明確地呼籲$.param(),但不認爲我需要。
  • 我期待JSON的回報。

    $.ajax({url: action, 
        type: "POST", 
        dataType: "json", 
        data: $.param($(domElement).data()), 
        complete: function() { 
         // Cleanup 
        }, 
        success: function(data) { 
         // Handle success. 
        }, 
        error: function() { 
         // Handle error 
        } 
    }); 
    

回答

0

不知道爲什麼,這只是發生在Firefox,但它幫助,如果你手動設置的內容類型?

$.ajax({url: action, 
    type: "POST", 
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 
    dataType: "json", 
    data: $.param($(domElement).data()), 

    complete: function() { 
     // Cleanup 
    }, 
    success: function(data) { 
     // Handle success. 
    }, 
    error: function() { 
     // Handle error 
    } 
}); 
+0

嘗試一下。它似乎減少了事件的發生次數,但我仍然看到它們。我想知道它是否與Ajax如何或何時確定內容類型以及我的數據通過jQuery附加到DOM對象有關。 – Chris

+0

這似乎是正確的:如果我在dom元素上使用.val()而不是.data,我得到內容類型標題。 – canuckistani