【问题记录】$.ajax的type="post"时提交失败

先贴上错误代码:

$.ajax({
	    url:'test.php',
	    type:'POST',
	    data:{
	    	a:"aaa",
	    	b:"bbb",
	    },
	    datatype:"json",
	    timeout:3000,
	    async: true, 
	    cache: false, 
	    contentType: false, 
	    processData: false, 
	    //headers:{"a":"123"},设置请求头
	    success:function(res){
	        res=JSON.parse(res);
	        console.log(res);
	        if(res.err_code==0){
	        	
	        }
	        else{
	        	alert(res.msg);
	        }
	       
	    },
	    error:function(xhr, textStatus, error){
	    	if(textStatus=='timeout' || error=='timeout'){

	    	}
	    },
	    complete:function(){
	    	//setTimeout(function(){
	    	//	test();
	    	//},1000);
	    }
	});
}

这是正确代码:

$.ajax({
	    url:'test.php',
	    type:'POST',
	    data:{
	    	a:"aaa",
	    	b:"bbb",
	    },
	    datatype:"json",
	    timeout:3000,
	    async: true, 
	    cache: false, 
	    //headers:{"a":"123"},设置请求头
	    contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
	   // processData: false, 
	    success:function(res){
	        res=JSON.parse(res);
	        console.log(res);
	        if(res.err_code==0){
	        	
	        }
	        else{
	        	alert(res.msg);
	        }
	       
	    },
	    error:function(xhr, textStatus, error){
	    	if(textStatus=='timeout' || error=='timeout'){

	    	}
	    },
	    complete:function(){
	    	//setTimeout(function(){
	    	//	test();
	    	//},1000);
	    }
	});

下面是解释,急的可以不用看了。

解决过程:
一开始以为data属性的写法写错了,但是我发现$.post()这个函数是可以的,所以不是json格式问题。
然后我就用错误的$.ajax()和$.post()打开network比较,发现
请求的Content-Type不一样
在这里插入图片描述
于是设置了一下contentType($.ajax这个设置是客户端告诉服务端,我要给你发送什么类型的信息(response-header里面的contentType是服务端告诉客户端,我要返回给你什么类型的信息))

contentType: "application/x-www-form-urlencoded; charset=UTF-8", 

设置之后还是不行,继续暗中观察,然后又发现
在这里插入图片描述
发送的数据格式不一样$.ajax发送的是对象,$.post发送的是字符串,那就是processData的问题了,这个设置是是否对发送的数据进行处理,之前知道这个设置的意思但不知道怎么它怎么处理就想反正不处理就对了,于是查了下processData的详细解释。
processData:默认为true,即发送的数据将被转换为对象。
我原来设定了false,就不处理,你的数据是什么格式就什么格式。之前一直认为是用json格式传的,然后突然想起其实不论get还是post,本质都是把数据拼到链接上发给服务端的,那不是字符串格式就当然拼接不了了。然后注释掉,可以了。

解释完毕,没有总结

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值