[请益] Ajax传值到后端问题(已解决)

楼主: firetim (firetim)   2020-10-21 23:39:53
各位大神好:
这两天自己用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
谢谢~
作者: kingofsdtw (不能閒下來!!)   2020-10-21 23:54:00
php fpm 默认首页不是有范例?
作者: codepo (codenfu)   2020-10-22 00:01:00
你要不要直接说是哪一个档案哪一行code?
作者: BigTounge (舌头)   2020-10-22 00:30:00
ajax的data先用JSON.stringfy试试看然后其实有php版跟ajax版比较适合问
作者: jack0204 (Jarbar王朝)   2020-10-22 00:33:00
你有没有开csrf token?
作者: BigTounge (舌头)   2020-10-22 00:33:00
打错了 更正JSON.stringify
作者: bigtongue   2020-10-22 01:35:00
没写过laravel 但是我看你取参数的方法跟官网写的不太一样 https://laravel.tw/docs/5.0/requests
作者: MyNion (Nion Lee)   2020-10-22 01:46:00
可惜偶4写C#的,不然我之前专题也是弄串接Google Map API然后用AJAX取值来动态改画面呈现
作者: plcder (盖头)   2020-10-22 01:47:00
ajax里面的type改成method应该就可以我之前也是用type无效
作者: wesley84212 (wesley)   2020-10-22 02:26:00
弱弱的想请问一下,如果把 method的 request['city']换成$request->city这样呢
作者: bigtongue   2020-10-22 02:35:00
建议你可以先在发送请求时看request的body然后直接debug看request接收到了什么东西
作者: wesley84212 (wesley)   2020-10-22 02:37:00
先console一下post到api之前的body看有没有问题、然后再看一下传到laravel的内容? 可能key的大小写打错之类的XD
作者: bigtongue   2020-10-22 02:37:00
因为我看你js的city的c是大写php却是用小写取
作者: yeeeeell (yeeeeell)   2020-10-22 02:40:00
data: {city: city} 大小写?
作者: wesley84212 (wesley)   2020-10-22 02:42:00
Body是data: {City: city}不过php里面是request[‘city’] 感觉怪怪的
作者: j269587   2020-10-22 07:27:00
Controller的citylinkarea内加个if($request->ajax()){}把你其他原本写的都写在这里面试试
作者: windclara (null)   2020-10-22 08:12:00
最好大小写保持一致。有时这种小坑会害你浪费好多天
作者: alihue (wanda wanda)   2020-10-22 09:21:00
CORS? 有开 browser console 看 log 吗
作者: wesley84212 (wesley)   2020-10-22 09:33:00
还有一个问题是,你的HTML select option 只有给他text 没有设定value?<option value=‘’>{{ $city->city}}<option>然后下面用.val()还是就是要拿text而已 那当我没说XD
作者: gundamew (Kobayashi)   2020-10-22 12:05:00
官方文件有写 $request->input('name')然后虽然自己写的专案没差,但还是建议加个 validator$request->ajax() 是判断 request 种类,回 bool 正常
作者: yyc1217 (somo)   2020-10-22 12:53:00
用网址带参数的方式测试$_GET能否取值(query parameter)用$_POST的话要注意虽然method都是post 但ajax跟html form submit出去的request格式不一样不过记得laravel已针对这点处理过了
作者: OriginStar   2020-10-22 13:09:00
问题解决了吗,没用过Laravel,查了一下网络资料web.php只有Route::post('/citylinkarea'所以用get method拒绝是合理的吧另外Laravel官方文件说会以json array的方式回复AddressController.php写死的范例看来是json array从DB捞的部分原PO自行确认有没有转换应该说data是array回复的话,content-type会自动是application/json,不用自己处理,其端才能正确解析
作者: ssccg (23)   2020-10-22 14:45:00
首先你的ajax的request的ontent-type要设成json

Links booklink

Contact Us: admin [ a t ] ucptt.com