【发布时间】:2016-09-22 09:47:26
【问题描述】:
我已经使用 javascript XMLHttpRequest() 成功发布/更新到 php $_REQUEST,例如:
function ajax_edit(e_id){
var edit_form = document.getElementById('edit_form'+e_id);
var e_name = document.getElementById('name'+e_id).value,
e_email = document.getElementById('email'+e_id).value,
e_contact = document.getElementById('contact'+e_id).value,
e_status = document.getElementById('status'+e_id).value;
xmlhttp.open('GET', 'hello-world.php?edit=yes&id='+e_id+'&name='+e_name+'&email='+e_email+'&contact='+e_contact+'&status='+e_status, true);
xmlhttp.send();
$('#edit'+e_id).modal('hide');
return false;
edit_form.reset();
}
我的 php 工作是这样的:
if(isset($_REQUEST['edit'])){
$name = mysqli_real_escape_string($conn, strip_tags($_REQUEST['name']));
$email = mysqli_real_escape_string($conn, strip_tags($_REQUEST['email']));
$contact = mysqli_real_escape_string($conn, strip_tags($_REQUEST['contact']));
$status = mysqli_real_escape_string($conn, strip_tags($_REQUEST['status']));
$edit_sql = "UPDATE users SET name = '$name', email = '$email', contact = '$contact', status = '$status' WHERE id = '$_REQUEST[id]'";
$run_edit = mysqli_query($conn, $edit_sql);
}
现在我正在尝试将相同的过程应用于另一个 Laravel 5.2 项目,但不知道该怎么做,特别是 url (hello-world.php?edit=yes) 部分来自哪里我将根据请求向我的控制器发送数据。
到目前为止,我已经完成了这个:
function submit_form(edit_id){
xmlhttp = new XMLHttpRequest();
var edit_form = document.getElementById('edit_form'+edit_id);
var url = "{{ URL::to('updatelabdetails'); }}";
var edit_labname = document.getElementById('labname'+edit_id).value,
edit_pcname = document.getElementById('pcname'+edit_id).value;
alert(edit_pcname);
var params = "labname='+edit_labname+'&pcname='+edit_pcname";
alert(params);
xmlhttp.open('GET', url+"?"+params, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && http.status == 200) {
alert(xmlhttp.responseText);
}
}
xmlhttp.send();
return false;
}
但只能输出到 alert(edit_pcname); 部分。
我的路线:
Route::post('updatelabdetails', 'LoginController@updateLabDetails');
我的控制器:
public function updateLabDetails(Request $request){
$post = $request->all();
var_dump($post);
die();
}
在提交到诸如 /showlabdetails? 之类的 URL 后,出现 MethodNotAllowedHttpException 错误。
提前致谢。
【问题讨论】:
-
您正在发送一个 GET 请求
xmlhttp.open('GET', url+"?"+params, true);,而路由被定义为 POSTRoute::post('updatelab...,这就是您收到 MethodNotAllowedHttpException 的原因。 -
我通过更改但同样的问题检查了它们('GET,'POST')。请用“?”向我推荐 url 部分因为我没有得到警报(参数)中的实际值;因为“var params”没有得到正确的值。
标签: javascript php ajax laravel-5.2