楼主:
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:00php fpm 默认首页不是有范例?
作者:
codepo (codenfu)
2020-10-22 00:01:00你要不要直接说是哪一个档案哪一行code?
ajax的data先用JSON.stringfy试试看然后其实有php版跟ajax版比较适合问
作者:
jack0204 (Jarbar王朝)
2020-10-22 00:33:00你有没有开csrf token?
作者: bigtongue 2020-10-22 01:35:00
作者:
MyNion (Nion Lee)
2020-10-22 01:46:00可惜偶4写C#的,不然我之前专题也是弄串接Google Map API然后用AJAX取值来动态改画面呈现
作者:
plcder (盖头)
2020-10-22 01:47:00ajax里面的type改成method应该就可以我之前也是用type无效
弱弱的想请问一下,如果把 method的 request['city']换成$request->city这样呢
作者: bigtongue 2020-10-22 02:35:00
建议你可以先在发送请求时看request的body然后直接debug看request接收到了什么东西
先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} 大小写?
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:00CORS? 有开 browser console 看 log 吗
还有一个问题是,你的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已针对这点处理过了
问题解决了吗,没用过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