我正在使用angularjs从表单获取userId,userTitle和userComment。 从那个控制器我发送到PHP页面。该页面应与服务器通信。 当我尝试发送整数时,一切都很好,但是当我尝试发送字符串时,我无法得到回声。 这是我在控制器中的功能:
$scope.addComment = function(userId, userTitle, userComment) {
$.ajax({
url: 'http://localhost/blip/app/phpCore/sendReview.php',//the script to call to get data
data: {
userId:userId,
userTitle:userTitle,
userComment:userComment
},//you can insert url argumnets here to pass to review.php
type: 'get', //for example "get"
dataType: 'json'})//data format
.done(function( msg ) { //on recieve of reply
alert( "Data Saved: " + msg );
}); // end ajax
}; //end angular scope
这是我的PHP:
<?php
include('blip_4815162342_108.php');
$UserID = $_GET['userId'];
echo $UserID;
?>
当我发送整数为“userId:userId”echo $ UserID;正在工作并返回.done警告“数据已保存:”+ 123。 php中的代码更复杂,但我在这一点上存货。
答案 0 :(得分:1)
在您的AJAX请求中,您指定服务器将返回JSON。
来自jQuery docs:
dataType(默认值:Intelligent Guess(xml,json,script或html))
类型:字符串您期望从中返回的数据类型 服务器
由于服务器返回一个字符串echo $UserID;
Ajax函数实际上会转到它没有定义的错误函数。如果您添加.error(function(e){console.log(e);});
,则会看到userId。
所以只需让你的服务器通过json_encoding你的返回值返回JSON:
<?php
include('blip_4815162342_108.php');
$UserID = $_GET['userId'];
echo json_encode(['userID':$UserID]);
?>
或者更改您的AJAX调用以接受非JSON。只需删除dataType声明。
答案 1 :(得分:1)
在角度你可能想要使用$ http ...
它的用法是这样的:
$scope.addComment = function(userId, userTitle, userComment) {
var data = JSON.stringify({
userId:userId,
userTitle:userTitle,
userComment:userComment
});
var req = {
method: 'POST',
url: 'http://example.com',
headers: {
'Content-Type': undefined
},
data: data
}
$http(req).then(function successCallback(response) {
JSON.parse(response)
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
}; //end of scope
请记住,您需要在控制器中注入$ http。我已将此编辑为帖子,因为它似乎更多是您正在寻找的功能。在这种情况下,您需要更改您的php以从POST而不是GET获取数据。