看板 Ajax 關於我們 聯絡資訊
※ [本文轉錄自 Soft_Job 看板 #1Va5PC6Q ] 作者: firetim (firetim) 看板: Soft_Job 標題: [請益] Ajax傳值到後端問題 時間: Wed Oct 21 23:39:53 2020 各位大神好: 這兩天自己用Google Map API 弄一個地址查詢 在做連動式下拉選單時抓不到 Ajax 傳的值 不論用$request, $_GET 或 $_POST 裡頭都是空的 Ajax 用GET 或 POST 傳都一樣 而我自己在後端固定抓某筆資料庫的資料以 JSON 傳送 或是傳一筆假資料以 JSON 傳送又是成功能送回前端使選單連動 但就是改回由收到 Ajax 送的來資料再進資料庫找就會失敗 Ajax 那裡自己用 console.log('city') 確實是有東西的 已經困兩天了,找了好多網站和能問的人也是沒解 不曉得問題出在哪?有點開始懷疑是不是作業系統的編碼問題 ---------------- 以下是東西的Github https://github.com/snowtim/damaiquiz_googlemap Ajax 寫的部分在/resources/views/googlemap.blade.php 裡面 第105行開始 後端寫在/app/Http/Controllers/AddressController.php裡面 citylinkarea 那個 function 將 Ajax 引到 controller 的 route 寫在/routes/web.php 當中Route::post('/citylinkarea, ..........) 那行 作業系統:Ubuntu 後端 語言:PHP 資料庫:MySQL 框架:Laravel 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.206.23 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1603294796.A.19A.html
kingofsdtw: php fpm 預設首頁不是有範例? 10/21 23:54
codepo: 你要不要直接說是哪一個檔案哪一行code? 10/22 00:01
忘記了~已補上 ※ 編輯: firetim (61.224.206.23 臺灣), 10/22/2020 00:18:40
BigTounge: ajax的data先用JSON.stringfy試試看 10/22 00:30
BigTounge: 然後其實有php版跟ajax版比較適合問 10/22 00:32
jack0204: 你有沒有開csrf token? 10/22 00:33
有哦~我有開
BigTounge: 打錯了 更正JSON.stringify 10/22 00:33
還是一樣,不管是GET或POST都同樣情形,就是當後端回傳值寫死能正常回傳 只要改回非寫死的話,除了POST我沒辦法用window.location進去看,會跑出 The GET method is not supported for this route. Supported methods: POST. 還有POST非寫死後端傳回來會出現 http://127.0.0.1:8000/citylinkarea 500 (Internal Server Error)詢息外 GET就是單純沒變化,然後同樣都會執行寫在Ajax的error情形詢息 ※ 編輯: firetim (61.224.206.23 臺灣), 10/22/2020 01:25:33
bigtongue: 沒寫過laravel 但是我看你取參數的方法跟官網寫的不太 10/22 01:35
bigtongue: 一樣 https://laravel.tw/docs/5.0/requests 10/22 01:35
中文的版本停在5,不過當時用過5.6和5.7自己的取法是可以的 然後現在Google Map這個是版本是8的,但下方另一個function還是可以取到
MyNion: 可惜偶4寫C#的,不然我之前專題也是弄串接Google Map API 10/22 01:46
MyNion: 然後用AJAX取值來動態改畫面呈現 10/22 01:46
地圖是可以出現,用寫死的假資料也能標出地點 現在卡在查詢地點這裡辦法繼續下去
plcder: ajax裡面的type改成method應該就可以我之前也是用type無效 10/22 01:47
謝謝~還是相同情況QQ~一直卡在這裡 後面的雖然有先寫不過沒辦法跑完全部 根本不知道還會有什麼問題QQ~ ※ 編輯: firetim (61.224.206.23 臺灣), 10/22/2020 02:03:05 ※ 編輯: firetim (61.224.206.23 臺灣), 10/22/2020 02:05:12 ※ 編輯: firetim (61.224.206.23 臺灣), 10/22/2020 02:05:42
wesley84212: 弱弱的想請問一下,如果把 method的 request['city'] 10/22 02:26
wesley84212: 換成$request->city這樣呢 10/22 02:26
也可以哦~自己試過兩種都取得到 只是我的問題還是一樣 在citylinkarea的function裡加了一段$request['city']沒值的回傳詢息 結果都會跑到這一段去 ※ 編輯: firetim (61.224.206.23 臺灣), 10/22/2020 02:34:02
bigtongue: 建議你可以先在發送請求時看request的body 10/22 02:35
bigtongue: 然後直接debug看request接收到了什麼東西 10/22 02:37
有~request的body都只有關於來源位址的資料 但就是沒Ajax送來的東西 換成看$_GET, $_POST裡頭也OA都是空的
wesley84212: 先console一下post到api之前的body看有沒有問題、然 10/22 02:37
wesley84212: 後再看一下傳到laravel的內容? 可能key的大小寫打錯 10/22 02:37
wesley84212: 之類的XD 10/22 02:37
您是指在data這裡打成data:console.log({City: city})這樣嗎? 我這樣打過console出來是有東西的
bigtongue: 因為我看你js的city的c是大寫php卻是用小寫取 10/22 02:37
yeeeeell: data: {city: city} 大小寫? 10/22 02:40
wesley84212: Body是data: {City: city} 10/22 02:42
wesley84212: 不過php裡面是request[‘city’] 感覺怪怪的 10/22 02:42
大小寫都有試過~不過還是一樣的情形 ※ 編輯: firetim (61.224.206.23 臺灣), 10/22/2020 04:26:27 ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: firetim (223.141.58.17 臺灣), 10/22/2020 05:16:37