我试图使用ajax和jquery发布数据,但是当我使用post方法时出现问题我得到的结果与get方法相同,为什么会这样。在按下控制器方法后,对象应该返回aon cansole但不是
查看
1
脚本
if( self.avPlayer.rate == 1 ){ self.avPlayer.rate = 1; }
路线
<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');
中返回url
它返回什么
public function store(Request $request)
{
return $values = $request->input();
}
console window
是我输入的值,Navigated to http://localhost:8080/beautyproductswebapp/Public/?name=rgerge
是输入字段的rgerge
答案 0 :(得分:0)
您在控制台中看到的内容几乎肯定不是来自您的ajax请求。
您的“addMenu”按钮是“提交”类型按钮(根据您的HTML)。当您单击此按钮时,它将使用正常的整页刷新自动提交您的表单。这可能会在您的ajax请求开始之前发生,当然也可能在它完成之前发生。即使它完成了,结果也会立即被表单提交引起的页面刷新所消除。
控制台中显示的行是使用GET的标准表单提交的结果(当您在 case amount' of
Just amount -> print $ Account (name,1,amount) Saving
Nothing -> putStrLn "Nothing"
else putStrLn "Nothing"
标记中未指定“action”或“method”参数时会发生这种情况) - 它请求再次使用相同的基本URL,您的表单变量将成为附加到URL的查询字符串参数。
为了防止这种情况,您可以
a)将按钮更改为this.setState({
conversation: [
(<div>first</div)
]
});
const currentConversation = state.conversation;
currentConversation.push((<div>new div</div>));
this.setState({conversation: currentConversation})
属性(而不是<form>
或
b)将type="button"
作为type="submit"
事件处理函数中的第一行。这将运行一个JS方法,该方法可以阻止元素的默认“单击”操作(在本例中为回发)。
这是您当前问题的原因。正如评论中所提到的,您使用ajax请求的方式可能会有一些进一步的问题。
答案 1 :(得分:0)
嗯,你的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
}