将数据传递到json/phpweb服务


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
        });
});

我总是从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。