繁体   English   中英

将数据传递到json / php网络服务

[英]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脚本的数据。

要了解更多有关这些的信息,请参阅下面给出的链接。

$ _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"

然后使用默认值'application/x-www-form-urlencoded; charset=UTF-8' 'application/x-www-form-urlencoded; charset=UTF-8' ,就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM