【问题标题】:Passing data to a json/php web-service将数据传递给 json/php 网络服务
【发布时间】:2013-06-25 11:55:37
【问题描述】:

我正在尝试使用 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['lang'] 它工作正常。但是$_POST['lang'] 仍然是相同的行为..

标签: php javascript jquery ajax web-services


【解决方案1】:

您可以使用服务器端 $_REQUEST,它适用于 POST 和 GET 方法:

$_REQUEST['lang']

【讨论】:

    【解决方案2】:

    您使用的是 $_GET["Key"],这是不正确的,因为您在 POST 变量中传递数据。

    你可以使用$_REQUEST["key"]

    $lang = $_REQUEST["lang"];
    

    $_POST["key"]

    $lang = $_POST["lang"];
    

    检索发送到 PHP 脚本的数据。

    要详细了解这些参考链接,请参阅下面的链接。

    $_REQUEST
    $_POST

    【讨论】:

      【解决方案3】:

      然后使用服务器端$_POST,而不是$_GET

      $_POST['lang']
      

      【讨论】:

        【解决方案4】:

        您应该将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
        ?>
        

        【讨论】:

          【解决方案5】:

          $_POST['lang'] 中更改$_GET['lang'] 后,它仍然无法正常工作。我删除了以下行:

          contentType: "application/json; charset=utf-8"

          然后使用默认值 'application/x-www-form-urlencoded; charset=UTF-8' 并且它起作用了。

          【讨论】:

            猜你喜欢
            • 2012-01-16
            • 2011-07-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-21
            • 1970-01-01
            • 2011-02-02
            相关资源
            最近更新 更多