[英]Passing data to a json/php web-service
我正在尝试使用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']
来访问输入数据吗? 我究竟做错了什么?
编辑:我在$_POST['lang']
更改了$_GET['lang']
,但仍然无法使用。
您可以使用服务器端$ _REQUEST,它对POST和GET方法都适用:
$_REQUEST['lang']
您正在使用$_GET["Key"]
,因为在POST变量中传递数据,这是不正确的。
您可以使用$_REQUEST["key"]
$lang = $_REQUEST["lang"];
或$_POST["key"]
$lang = $_POST["lang"];
检索发送到PHP脚本的数据。
要了解更多有关这些的信息,请参阅下面给出的链接。
因此,请使用服务器端$_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"
然后使用默认值'application/x-www-form-urlencoded; charset=UTF-8'
'application/x-www-form-urlencoded; charset=UTF-8'
,就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.