【发布时间】:2016-08-28 04:35:15
【问题描述】:
虽然我使用 Ajax 发送请求,但来自服务器的响应有一个完整的 HTML 页面,而不是预期的简单 JOSN 对象。
我的发送代码:
<script>
var form = new FormData();
form.append("name", "dasdf");
form.append("email", "admin@admin.com");
form.append("mobile_number", "454545");
form.append("pin", "1234");
form.append("gender", "male");
form.append("allow_users_see_me", "true");
form.append("password", "123456");
form.append("country_code", "QA");
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost/register",
"method": "POST",
"headers": {
"X-CSRF-Token": "2oVPtMysQ30esIv6X2LJYghonCAbR4Zt4Op20SEV",
"cache-control": "no-cache",
"postman-token": "b3c3ff77-a12f-7b60-4b53-16fcbcb97469"
},
"processData": false,
"contentType": 'application/json; charset=utf-8',
"data": form
}
$.ajax(settings).done(function (response) {
console.log(response);
});
</script>
有什么想法吗?
编辑
public function register(RegisterRequest $request)
{
Log::info('start');
}
编辑
我找到了laravel返回异常的地方,在render函数里面。
public function render($request, Exception $e)
{
if ($e instanceof HttpResponseException) {
return $e->getResponse();
} elseif ($e instanceof ModelNotFoundException) {
$e = new NotFoundHttpException($e->getMessage(), $e);
} elseif ($e instanceof AuthorizationException) {
$e = new HttpException(403, $e->getMessage());
} elseif ($e instanceof ValidationException && $e->getResponse()) {
return $e->getResponse();
}
if ($this->isHttpException($e)) {
return $this->toIlluminateResponse($this->renderHttpException($e), $e);
} else {
return $this->toIlluminateResponse($this->convertExceptionToResponse($e), $e);
}
}
而 laravel 返回 HttpException。
-更新-
这是我的路线
Route::get('test', 'loginController@test');
这是错误
<div class="alert alert-danger">
The name field is required.<br/>
The email field is required.<br/>
The mobile number field is required.<br/>
The pin field is required.<br/>
The gender field is required.<br/>
The password field is required.<br/>
</div>
-编辑- 路线是:
Route::post('register', 'AuthController@register');
【问题讨论】:
-
您发送请求的格式与响应的格式无关。您是否检查过响应本身?通常 HTML 而不是 JSON 响应表示服务器上出现 404 或 500 错误
-
您能否发布提供响应的 PHP/控制器代码及其链接到的路由。我通过经验发现,当出现错误时,我会得到 HTML 来响应 ajax 调用。最好的办法是做一些更精细的调试,看看它会把你带到哪里。
-
由于 Laravel 会在执行函数之前验证 $request 规则,所以上面的 Log 不会记录 'start'.. 我正在向您发送函数签名和未执行的 Log 命令跨度>
-
你需要弄清楚到那时它没有得到哪个规则。尝试像这样通过 chrome 运行请求:在 windows 上打开 web 开发人员工具
f12/在 mac 上Cmd + Opt + I,单击网络选项卡,运行产生错误的请求,单击显示在网络标签(你也应该看到错误状态代码)并点击预览 - 你看到了什么? -
刚刚意识到你说“而 laravel 返回 HttpException”。好吧,这就是您的起点,正如我之前所说的“您能否发布提供响应的 PHP/控制器代码及其链接到的路由。”那么路线在哪里呢?我猜那里可能出了点问题?
标签: jquery ajax laravel laravel-5.2