我正在尝试使用JQuery将一些数据传递给Web服务。这是一个简单的客户端:
<script type="text/javascript">
$(function () {
$.ajax({
type: "POST",
url: "webservices/gammeList.php?lang=fr",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: onSuccess,
error: onError
});
});
function onError(result) {
alert("error");
}
function onSuccess(result){
alert(JSON.stringify(result));
}
</script>
一个简单的服务器:
<?php
if (isset($_GET['lang']) && !empty($_GET['lang'])) {
$lang = $_GET['lang'];
} else {
$lang = "en";
}
echo (json_encode($lang));
?>
它工作正常,但我想使用数据设置传递数据:
$(function () {
$.ajax({
type: "POST",
url: "webservices/gammeList.php",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: {lang: "fr"},
success: onSuccess,
error: onError
});
});
我总是将 “en” 作为来自网络服务的回复。那么在这里,我应该使用相同的方法$_GET['lang']
来访问输入数据吗?我做错了什么?
编辑:
我在$_GET['lang']
中更改了$_POST['lang']
,但仍然无效。
答案 0 :(得分:2)
您可以使用服务器端$ _REQUEST,它将适用于POST和GET方法:
$_REQUEST['lang']
答案 1 :(得分:1)
您正在使用$_GET["Key"]
,因为您在POST变量中传递数据时这是不正确的。
您可以使用$_REQUEST["key"]
$lang = $_REQUEST["lang"];
或$_POST["key"]
$lang = $_POST["lang"];
检索发送到PHP脚本的数据。
更多地了解下面给出的这些推荐链接。
答案 2 :(得分:0)
然后使用服务器端$_POST
,而不是$_GET
:
$_POST['lang']
答案 3 :(得分:0)
您应该将array
传递给json_encode function
,例如
<?php
// Also you are using post method in ajax so use $_POST or $_REQUEST here
if (isset($_REQUEST['lang']) && !empty($_REQUEST['lang'])) {
$lang = $_REQUEST['lang'];
} else {
$lang = "en";
}
echo (json_encode(array($lang)));// here passing array to json_encode
?>
答案 4 :(得分:0)
在$_GET['lang']
中更改$_POST['lang']
后,它仍无效。我删除了以下行:
contentType: "application/json; charset=utf-8"
然后使用默认值'application/x-www-form-urlencoded; charset=UTF-8'
并且它有效。