代码如下,很简单的jquery发送ajax操作:
$("#form").click(function(){
var str = $("#form5").serializeArray()[0].value;
var k=$("#form5").serializeArray()[1].value;
var n=$("#form5").serializeArray()[2].value;
var temp = ({
str:$("#form5").serializeArray()[0].value,
k:$("#form5").serializeArray()[1].value,
n:$("#form5").serializeArray()[2].value,
});
$.ajax({
url:http+"value",
type:"GET",
dataType:"json",
data:temp,
// 这里把表单里面的数据放在这里传到后台
success:function(res){
document.getElementById('jg5').innerHTML =res.data;
} ,
error:function(res){
console.log('error');
}
})
return false;
})
然而我们却得不到想要的结果
控制台会打印出error,明显进入了error分支
这个是由于dataType设置问题导致的
前端设置dataType:“json”,但后台传来的数据如果不是严格的json就会报错
但是我们有的时候会发现,明明后台传来的就是标准json啊!
例如我这个:
现在的解决办法只有一个了 那就是
把dataType:"json"修改为“text”
前端自己进行字符串分隔!
修改代码如下
$("#form").click(function(){
var str = $("#form5").serializeArray()[0].value;
var k=$("#form5").serializeArray()[1].value;
var n=$("#form5").serializeArray()[2].value;
var temp = ({
str:$("#form5").serializeArray()[0].value,
k:$("#form5").serializeArray()[1].value,
n:$("#form5").serializeArray()[2].value,
});
$.ajax({
url:http+"value",
type:"GET",
dataType:"text",
data:temp,
// 这里把表单里面的数据放在这里传到后台
success:function(res){
console.log(res.length);
str = ''
for(let i=17;i<(res.length)-1;i++)
{
var str = str + res[i];
}
console.log(str);
document.getElementById('jg5').innerHTML =str;
} ,
error:function(res){
console.log(111);
}
})
return false;
})
一个for循环轻松搞定!
最后我们可以看到控制台打印了我们想要的结果
后记:
虽然这次解决了问题,但是还是有一些没有彻底挖掘的疑点
当请求为post时,后台发来的标准json就可以接收,而get时就不能接收了,只能靠text字符串分隔曲线救国,不知道是什么原因呢?