我正在创建一个joomla 2.5组件,我有一个角度发布请求的问题。
这是我的Javascript(角度框架):
var itemToSend = "ok";
$http.post('http://mediastore.dev/index.php?option=com_mediastore&task=sendMail&format=raw', itemToSend)
.success(function(data) {
console.log("my->"+data);
})
.error(function() {
console.log('shit happens');
});
我的控制员:
public function sendMail() {
if(isset($_POST)) {
$res = $_POST['itemToSend'];
echo $res;
}else {
echo 'nothing';
}
}
并且回调返回
我的 - >
注意:未定义索引:itemToSend
为什么未定义索引?怎么了?
非常感谢,
安托
我之前尝试过这个,但问题是同样的。
我将我的php更改为:
public function sendMail() {
if(isset($_POST['itemToSend'])) {
$res = $_POST['itemToSend'];
echo $res;
}else {
echo 'nothing';
}
}
和我的js:
var itemToSend = {
itemToSend: "ok"
};
$http.post('http://mediastore.dev/index.php?option=com_mediastore&task=sendMail&format=raw', itemToSend)
.success(function(data) {
console.log("my->"+data);
})
它总是返回“没有”
答案 0 :(得分:1)
我不是为什么但是......似乎是角度$ http请求。
角度版本不起作用:
$http.post('index.php?option=com_mediastore&task=sendMail&format=raw', itemToSend)
.success(function(data) {
console.log("my->"+data);
})
但是jquery版本有效:
jQuery.ajax({
type: "POST",
url: "index.php?option=com_mediastore&task=sendMail&format=raw",
data: itemToSend,
success: function(data){
console.log(data);
}
});
我很想知道为什么?
答案 1 :(得分:0)
Angular不会通过FormData发送数据,而是通过有效负载发送数据。
通过PHP,你不能使用$ _POST或Joomla的post输入法来检索这些数据,你必须这样做:
$post = json_decode(file_get_contents("php://input"));
...并将$ post变量视为对象。