[问题] jQuery的.ajax

楼主: neil987 (R5大小姐-EX人品崩坏)   2017-10-27 10:45:40
最近写的小爬虫遇到一个问题
就是网页的表单资料是利用javascript截取之后
再利用.ajax送出去
$.ajax({
url: "my url",
data: {data:value},
type: "POST",
dataType: 'text',
success: function (msg) {
...
}
});
value用console看起来长这个样子
{base: Array(5), data: Array(7)}
base: (5) ["2017-10-27", "name", "", "3", 0]
data: (7) ["正常", "正常", "正常", "正常", "正常", "正常", "正常"]
不过用chrome的开发工具看了一下POST出去的资料
data[base][]:2017-10-27
data[base][]:name
data[base][]:
data[base][]:3
data[base][]:0
data[data][]:正常
data[data][]:正常
data[data][]:正常
data[data][]:正常
data[data][]:正常
data[data][]:正常
data[data][]:正常
data[data][]:正常
data[data][]:正常
data[data][]:正常
感觉就不太对
在python底下直接送这个也是错的
想请问一下 jQuery里面的ajax在POST表单的时候 他转换成requests的payload
会长成什么样子?
感谢
作者: tedwu2001   2017-10-27 10:53:00
看contentType默认是x-www-form-urlencoded所以长得就是像你打得那样
作者: ckc1ark (伪物)   2017-10-27 11:07:00
是不是应该用data: value就好?
楼主: neil987 (R5大小姐-EX人品崩坏)   2017-10-27 11:10:00
楼上是指ajax的部分吗
作者: ckc1ark (伪物)   2017-10-27 11:12:00
如果ajax是网页原本的行为 可以参考这篇http://tinyurl.com/y726rrqg你的key重复了 在dict同个key只会留一笔https://stackoverflow.com/a/10233141 换这篇试试value1 = {"data[base][]":["20 ... 这样呢data[base][]
楼主: neil987 (R5大小姐-EX人品崩坏)   2017-10-27 11:36:00
这也是失败 怪了= =都是直接死在日期未填写
作者: ckc1ark (伪物)   2017-10-27 11:39:00
可以看开发工具的Form Data有个view source可以按看有没有跟传的一样你
楼主: neil987 (R5大小姐-EX人品崩坏)   2017-10-27 11:42:00
看起来是一样的 可能要检查其他东西惹= =
作者: ckc1ark (伪物)   2017-10-27 11:50:00
把所有header都代一样的值 再一个一个删 看删到哪个会挂
楼主: neil987 (R5大小姐-EX人品崩坏)   2017-10-27 12:06:00
WTF 他卡住了
作者: tedwu2001   2017-10-27 12:09:00
要看server端怎么处理request,可能很多先改用json去试,说不定server端没处理formdata
作者: handsomeLin (DoGLin)   2017-10-27 22:44:00
唷他在送表单的时候用另外一个{}包住了他server端处理可能是req.body.data.base.data这样的深度上面多打一个data 靶他视为分开简而言之你post的资料少一层写成dict 或是 object形式的话大概就是 body = {data:{base:[],data:[]}}可以的话可以传网址给喔 我帮你测
楼主: neil987 (R5大小姐-EX人品崩坏)   2017-10-28 14:38:00
犯了很蠢的错QQ
作者: lemon651 (小明)   2017-10-30 16:28:00
对server端你那样做跟我讲的是一样意思的...param指的是querystring上的东西,他server端没针对那边parse的话是不管的

Links booklink

Contact Us: admin [ a t ] ucptt.com