将数据传递给json / php web服务

时间:2013-06-25 11:55:37

标签: php javascript jquery ajax web-services

我正在尝试使用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']来访问输入数据吗?我做错了什么?

编辑: 我在$_GET['lang']中更改了$_POST['lang'],但仍然无效。

5 个答案:

答案 0 :(得分:2)

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

$_REQUEST['lang']

答案 1 :(得分:1)

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

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

$lang = $_REQUEST["lang"];

$_POST["key"]

$lang = $_POST["lang"];

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

更多地了解下面给出的这些推荐链接。

$_REQUEST
$_POST

答案 2 :(得分:0)

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

$_POST['lang']

答案 3 :(得分:0)

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

答案 4 :(得分:0)

$_GET['lang']中更改$_POST['lang']后,它仍无效。我删除了以下行:

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

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