我正在尝试使用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
});
});
我总是从web服务得到"en"作为响应。那么,在这里,我应该使用相同的方法$_GET['lang']
来访问输入数据吗?我做错了什么?
编辑:我在$_POST['lang']
中更改了$_GET['lang']
,但仍然不起作用。
您可以使用服务器端$_REQUEST,它将同时适用于POST和GET方法:
$_REQUEST['lang']
您使用的是$_GET["Key"]
,这是不正确的,因为您在POST变量中传递数据。
您可以使用$_REQUEST["key"]
$lang = $_REQUEST["lang"];
或$_POST["key"]
$lang = $_POST["lang"];
以检索发送到PHP脚本的数据。
要阅读更多关于这些的内容,请参阅下面给出的链接。
$_REQUEST
$_POST
所以使用服务器端$_POST
,而不是$_GET
:
$_POST['lang']
您应该像一样将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
?>
在$_POST['lang']
中更改$_GET['lang']
后,它仍然无法工作。我删除了以下行:
contentType: "application/json; charset=utf-8"
然后使用默认值CCD_ 14。