关于Ajax的type为post提交方式出现请求失效问题
生活随笔
收集整理的這篇文章主要介紹了
关于Ajax的type为post提交方式出现请求失效问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近碰到這樣一個問題,原本一個ajax異步提交數據之前是很好的,很多系統都延用了均未出現任何問題。最近這個版本卻出現ajax方式post數據不到后臺程序,讓我折騰了好幾天。起初的ajax是這樣寫的:
?
view sourceprint? 01.$.ajax({ 02.type:?'POST', 03.url:?"/Ajax/SaveData.aspx", 04.dataType:?"json", 05.data:?"RequestTime="+ (new?Date()).toString()+"&WorkFlowInfo="+jsonText, 06.beforeSend:?function?() { 07.}, 08.success:?function?(msg) { 09.$("div[class='datagrid-mask']").hide(); 10.$("div[class='datagrid-mask-msg']").hide(); 11.alert(msg.mes); 12.if?(msg.op !=?"err") 13.window.location.reload(); 14.? 15.}, 16.error:?function?(errorMsg) { 17.$("div[class='datagrid-mask']").hide(); 18.$("div[class='datagrid-mask-msg']").hide(); 19.alert("發生了一個錯誤"); 20.} 21.});?
當我的jsonText字符串不是很長的情況下,是可以post至后臺服務的。那么既然我的type為post方式,與數據長短有何關系對吧?你或許會如此堅定的想。
易錯點:
那么為何當jsonText過長時post提交至后臺失敗呢?細心的網友可能會發現雖然是post方式但是data的書寫方式是不對的,data原本就是接受json類型的參數和數據的,上面的代碼卻將之當做了直接在url內傳遞參數的形式,換言之就是將ajax的psot提交方式活生生地變換為了get方式提交。
get方式提交是直接在url內傳遞參數和數據,url內有最大字數限制的,所以當jsonText過長時就提交不至后臺服務。
?
如何糾正?
既然是data的書寫方式不對,那么我們只需要糾正一下這個地方即可,糾正后的示例代碼如下所示:
?
view sourceprint? 01.$.ajax({ 02.type:?'POST', 03.url:?"/Ajax/SaveData.aspx", 04.dataType:?"json", 05.data: {RequestTime:(new?Date()).toString(),WorkFlowInfo:escape(jsonText)}, 06.beforeSend:?function?() { 07.}, 08.success:?function?(msg) { 09.$("div[class='datagrid-mask']").hide(); 10.$("div[class='datagrid-mask-msg']").hide(); 11.alert(msg.mes); 12.if?(msg.op !=?"err") 13.window.location.reload(); 14.? 15.}, 16.error:?function?(errorMsg) { 17.$("div[class='datagrid-mask']").hide(); 18.$("div[class='datagrid-mask-msg']").hide(); 19.alert("發生了一個錯誤"); 20.} 21.});這樣一來就可以正常post數據至后臺服務了的。
總結
以上是生活随笔為你收集整理的关于Ajax的type为post提交方式出现请求失效问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实战:微信小程序支付开发具体流程
- 下一篇: RabbitMQ 高可用集群搭建及电商平