我是一个完整的堆栈学生并且正在尝试做我的作业...我正在使用Jquery向php发送一个daya对象。 当方法是GET或POST时它工作正常,但是当它是DELETE&时不工作PUT,php得到的方法但不会得到数据对象,它给出了一个错误:Undefined index:activitiesArray。 我对所有选项使用相同的功能,如果我改变它的方法,它就可以工作。
问题 OUTPUT 调试控制台 终奌站 .. 我究竟做错了什么?? 谢谢!
这是我在javascript中的ajax: “使用静态”;
function sendAJAX(method, url, data, calltype) {
$.ajax({
type: method,
url: url,
data: { activitiesArray: data },
success: function(response_text) {
callback(response_text, calltype);
}
});
}
这是我的php api:
$method = $_SERVER['REQUEST_METHOD']; // verb
$params = $_REQUEST['activitiesArray'];
switch ($params['ctrl']) {
case 'Director':
$capi = new DirectorApi();
$result = $capi->gateway($method, $params);
echo json_encode($result);
break;
case 'Movie':
$capi = new MovieApi();
echo $capi->gateway($method, $params);
break;
}
答案 0 :(得分:0)
为put和delete更改这样的代码
function sendAJAX(method, url, data, calltype) {
$.ajax({
type: method,
url: url,
data: JSON.stringify({activitiesArray: data}),
success: function(response_text) {
callback(response_text, calltype);
},
dataType: 'json',
contentType: 'application/json'
});
}
在php方面,你不能使用$ _REQUEST来处理put请求,你可以这样做
$method = $_SERVER['REQUEST_METHOD']; // verb
$params = $_REQUEST['activitiesArray'];
if($_SERVER['REQUEST_METHOD'] == 'PUT') {
parse_str(file_get_contents("php://input"),$post_vars);
echo $post_vars['your_input']; // you can access query parameters like this
}
else
{
switch ($params['ctrl']) {
case 'Director':
$capi = new DirectorApi();
$result = $capi->gateway($method, $params);
echo json_encode($result);
break;
case 'Movie':
$capi = new MovieApi();
echo $capi->gateway($method, $params);
break;
}
}