2013-06-25 22 views
0

我正尝试将一些数据传递给使用JQuery的Web服务。下面是一个简单的客户端:将数据传递给json/php网络服务

<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']但仍然不起作用。

+0

use'$ _POST ['lang']' – bystwn22

+0

我很困惑。 如果我使用'$ _REQUEST ['lang']'它可以正常工作。但是用'$ _POST ['lang']'仍然是一样的行为。 – leochab

回答

0

改变$_POST['lang']$_GET['lang']后,它仍然没有工作。我删除以下行:

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

使用,那么默认值'application/x-www-form-urlencoded; charset=UTF-8'和它的工作。

0

因此,然后使用服务器端$_POST,不$_GET

$_POST['lang'] 
2

您可以使用服务器端的$ _​​REQUEST将两个岗位工作和GET方法:

$_REQUEST['lang'] 
0

你应该通过arrayjson_encode function like,

<?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 
?> 
1

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

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

$lang = $_REQUEST["lang"]; 

$_POST["key"]

$lang = $_POST["lang"]; 

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

要详细了解下面给出的这些引用链接。

$_REQUEST
$_POST

+0

它使用REQUEST,但不是POST。任何想法为什么? – leochab