[問題] 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