我创建了一个带有JS文件的简单HTML文档来测试AJAX调用,我知道XHR请求正在成功提交,但响应中没有任何内容。在控制台中,我看到template
属性在post
服务器请求中没有与之关联,但我无法找出原因......
掌握HTML:
<!DOCTYPE>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="{!! asset('/js/main.js') !!}"></script>
</head>
<body>
@yield('content')
</body>
</html>
页面HTML:
@extends('layouts.master')
@section('content')
<p>Make a new email to send out:</p>
{!! Form::token() !!}
<textarea id='template' style="resize:none;width:500px;height:100px;"></textarea>
<button id='addContacts'>Add Contacts</button>
<span id='loading' style='display:none;'>Loading...</span>
<div id='results'></div>
@endsection
JS文件(在请求中同时尝试了type
和method
,但我使用的是JQuery 2.1.3,因此两者都有效):
$(document).ready(function(){
// return the list of input fields for this template
$('#addContacts').click(function(){
$.ajax({
method: 'post',
url: 'http://newco.dev/addContacts',
data:
{
'template' : $('#template').val(),
'_token' : $('input[name=_token]').val()
},
error: function()
{
alert('Something went wrong.');
},
beforeSend: function() {
$('#loading').show();
},
success: function(response) {
$('#loading').hide();
$('#results').html(response);
}
});
});
}); // end doc ready
路线:
Route::post('/addContacts', 'ActionController@returnFields');
控制器(是的,包括use App\Http\Requests;
):
public function returnFields(Request $request)
{
sleep(2);
return $request->template;
}
提交后,#loading
div会按预期显示2秒,但之后不会返回任何内容......
点击按钮后的开发工具(在Chrome中):
Remote Address:192.168.10.10:80
Request URL:http://newco.dev/addContacts
Request Method:POST
Status Code:200 OK
FORM DATA:
template:
_token:AuOTiLSg3rKYtLDIH1abzsQHsLv0fzswgXIfzE8h
Laravel日志中没有记录任何内容;我之所以这么做是因为它不是500
错误。
有什么想法吗?我每天都使用Laravel作为API开发人员,所以我非常熟悉它的概念,但我不是最好的JS开发人员(虽然我肯定有经验)所以也许我只是缺少一些东西明显。如果您需要更多数据,请询问。
谢谢!
答案 0 :(得分:0)
你应该show
你隐藏的div
即,将$('#loading').hide();
更改为$('#loading').show();
然后只有你能看到你得到的输出
success: function(response) {
$('#loading').show();
$('#results').html(response);
}
希望这有助于你
答案 1 :(得分:0)
因此,在尝试了一百万件事并与大量人交谈后,我将页面中属性的名称更改为email
而不是template
,一切都运行得很好。我不确定为什么单词&#34; template&#34;会引起问题,但似乎是这样。