【发布时间】:2020-02-10 14:15:20
【问题描述】:
我遇到了一种奇怪的行为,完全不知道为什么以及如何解决它。我是 PHP/Laravel/Ajax 的新手,所以请多多关照 ^^
我的刀锋形态:
<form method="post" action="{{ route('postContact') }}" id="id_post_contact">
@csrf
<input class="form-control" type="text" name="in_email" placeholder="contact@email.com">
[...]
<button class="btn" type="submit">Submit Question</button>
</form>
<div>
<script>
$("#id_post_contact").submit(function(e) {
e.preventDefault();
var form = $(this);
var url = form.attr('action');
var data2Send = form.serialize();
$.ajax({
type:'POST',
url:url,
headers:{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
},
data:data2Send,
dataType:'JSON',
cache:false,
//contentType:'application/json',
success: function(data) {
alert(data.success);
}
});
});
</script>
</div>
我的路线:
Route::post('/contact', 'BasisController@postContactEmail')->name('postContact');
我的控制器 postContactEmail 方法:
public function postContactEmail(Request $req){
dd(
$req->ajax(),
$req->isXmlHttpRequest(),
$req->all()
);
return response()->json(['success' => 'Got Simple Ajax Request.']);
}
出于我忽略的原因,我的 $req->ajax() 总是返回 false。
在这里问我的第一个问题之前,我已经尝试了很多东西,但没有任何效果,尤其是同样的代码到现在都运行良好,所以我真的一点头绪都没有。
唯一不同的是我的 Laravel 版本已从 5.8 更改为 6.2。
我不知道为什么我的表单没有正确发送数据,我的标头请求:
Accept
text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding
gzip, deflate, br
Accept-Language
fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Connection
keep-alive
Content-Length
149
Content-Type
application/x-www-form-urlencoded
Cookie
__cfduid=da74c7ad6c9ff7514e482…E_OPTINVEST_CONSENT=1; _gat=1
Host
fake-site.tld
Referer
https://fake-site.tld/
TE
Trailers
Upgrade-Insecure-Requests
1
User-Agent
Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/69.0
还有我的标题响应:
cf-cache-status
DYNAMIC
cf-ray
5254def1febccdd7-CDG
content-encoding
br
content-type
text/html; charset=UTF-8
date
Sun, 13 Oct 2019 22:50:09 GMT
expect-ct
max-age=604800, report-uri="ht….com/cdn-cgi/beacon/expect-ct"
server
cloudflare
vary
Accept-Encoding
X-Firefox-Spdy
h2
P.S.:我的 jquery 版本是 2.2.4(即使是 3.4.1 版本,行为也是一样的,$req->ajax() 总是会返回 false)
【问题讨论】:
-
能否提供来自浏览器Network 控制台的请求标头屏幕截图?这比试图理解问题中复制的文本更容易
-
我只是注意到您的评论^^会尽快处理,谢谢
标签: jquery ajax laravel laravel-blade