我试图使用ajax和jquery发布数据但是当我使用post方法时出现问题我得到url的结果和get方法一样,为什么会这样。在击中控制器方法后,对象应该返回aon cansole但不是
视图
<div class="box-body">
<form role="form">
<!-- select -->
<div class="form-group">
<label>Select</label>
<select class="form-control">
<option>option 1</option>
<option>option 2</option>
<option>option 3</option>
<option>option 4</option>
<option>option 5</option>
</select>
</div>
<!-- input states -->
<div class="form-group has-success">
<label class="control-label" for="inputSuccess"><i class="fa fa-check"></i> Input with
success</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Enter ...">
<span class="help-block">Help block with success</span>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-info pull-right" id="addMenu">Add Menu</button>
</div>
</form>
</div>
脚本
<script>
$(document).ready(function () {
$('.ourItem').each(function () {
$(this).click(function (event) {
var text = $(this).text();
$('#inputSuccess').val(text);
$('#delete').show(400);
$('#saveChanges').show(400);
// console.log(text);
});
});
$('#addMenu').click(function (event) {
var text = $('#name').val();
$.post("menu.store", {'text':text}, function(data) {
console.log(data);
});
});
});
</script>
路线
Route::resource('/menu','NavegationController');
调节器
public function store(Request $request)
{
return $values = $request->input();
}
它应该返回对象但它在浏览器中的console window
中返回url
它返回什么
Navigated to http://localhost:8080/beautyproductswebapp/Public/?name=rgerge
rgerge
是我输入的值,name
是输入字段的name
您在控制台中看到的几乎肯定不是来自您的ajax请求。
您的“addMenu”按钮是一个“提交”类型按钮(根据您的HTML)。当您单击此按钮时,它将使用正常的整页刷新自动提交您的表单。这可能会在您的ajax请求开始之前发生,当然也可能在它完成之前发生。即使它完成了,结果也会立即被表单提交导致的页面刷新消除。
控制台中显示的行是使用GET的标准表单提交的结果(当您在<form>
标记中未指定“action”或“method”参数时会发生这种情况) - 它再次请求相同的基本URL,并且您的表单变量成为附加到URL的查询字符串参数。
为了防止这种情况,您可以
a)将按钮更改为具有type="button"
属性(而不是type="submit"
要么
b)将event.preventDefault();
作为$('#addMenu').click(function (event) {
事件处理函数中的第一行。这将运行一个JS方法,该方法可以阻止元素的默认“单击”操作(在本例中为回发)。
这是您当前问题的原因。正如评论中所提到的,您可能会遇到一些问题,这与您使用ajax请求的方式有关。
那么你的ajax称它有点奇怪,显然它的错误:
$.post('/menu', function(data) {
console.log(data);
});
然后响应也是错误的,你会想要将对象转换为json,因为它是一个ajax调用,所以这就是这样的:
public function store(Request $request)
{
.... perform the queries or operations that you want to perform.
if($request->wantsJson(){
//Laravel automatically will cast the response to json
return response(['status'=>'ok'], 200);
}
return ..view
}