问个 ajax 的问题,谢谢帮助

2018-03-03 20:14:21 +08:00
 bmcjxhgwy
在 django 中,前端发送了数据,我后台返回了{‘ res ’:0},在前端 response 中也接受到了,为什么 ajax 一直走 err 啊?是返回格式不对吗,应该在哪改啊?谢谢了
3299 次点击
所在节点    Python
28 条回复
liuxu
2018-03-03 20:16:50 +08:00
json 应该用双引号
bmcjxhgwy
2018-03-03 20:23:43 +08:00
谢谢,但他还是走 err 我返回的 data 是个 object,但一旦打印 data.res 他就显示 undefined,我觉得是返回的格式不对,但是不知道怎么改
gongpeione
2018-03-03 20:26:46 +08:00
跨域了?
bmcjxhgwy
2018-03-03 20:28:09 +08:00
在 F12 页面上没显示有跨域的问题.....
bmcjxhgwy
2018-03-03 20:29:56 +08:00
我用了 jsonp 应该不会有跨域的请求..
loading
2018-03-03 20:30:00 +08:00
返回没指定 mime ?
或者 js 里面先 序列化一下。

jQuery.parseJSON(jsonstr),
bmcjxhgwy
2018-03-03 20:36:39 +08:00
序列化了好像也没什么用.....
bxb100
2018-03-03 20:40:27 +08:00
前端用()拼接试试
Yunhao
2018-03-03 20:44:46 +08:00
用 postman 跑一下试试?
dinggk
2018-03-03 20:48:16 +08:00
后端指定 contenttype text/json
summerwar
2018-03-03 20:51:22 +08:00
放代码啊 ,难道靠猜吗?不放代码来截图也行啊
loading
2018-03-03 21:17:19 +08:00
不给代码确实已经没法帮你了。
Danielfile
2018-03-03 21:25:37 +08:00
你是在外面打印的吧?要把 async 设置为 false,默认是异步执行请求的。
bmcjxhgwy
2018-03-03 21:33:16 +08:00
这是 ajax:
$(function(){
$('#send-btn').click(function(){
$.ajax({
url:'http://127.0.0.1:8000/laoguo/',
type:'get',
data:{'name':'laoguo'},
dataType:'jsonp',
success:function(data){
if(data.res == 0){
alert('get')
}else{
alert('....')
}
},
error:function(data){
alert(data.res)
}
})
})
})

这是 django 的 view:
def test(request):
if request.method == "GET":
name = request.GET.get("name")
print(name)
return JsonResponse({"res":0})
else:
name = request.POST.getlist("name")
print(name)
return JsonResponse({"res":1})
misaka19000
2018-03-03 21:35:53 +08:00
看下控制台有没有报错
xy90321
2018-03-03 21:40:24 +08:00
jquery ?改成下面这样然后设个断点调试下
error: function(data, status, error){
}
总过先看看什么错咯
sublime
2018-03-03 21:40:27 +08:00
返回的数据格式不对,你这个是 jsonp,需要后台处理下,比如 fn_cb({"res": 0}),不能直接返回 json
bmcjxhgwy
2018-03-03 21:45:29 +08:00
@sublime fn_cb 是什么....我也觉得是数据格式不对
brickyang
2018-03-03 21:55:23 +08:00
如果你确实知道是要用 JSONP,那么不能直接返回 JSON,而且 url 也写错了。

https://segmentfault.com/a/1190000008445998
sublime
2018-03-03 21:57:09 +08:00
@bmcjxhgwy fn_cb 是任意函数名,jsonp 是在前台定义一个函数,后台返回一段 js 代码调用这个函数并传入数据,以此来实现跨域,jquery 应该对返回的数据做了校验,后台返回的数据格式不对,所以进了 err

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/434542

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX