php - Ajax + JSON 解码 + Slim PHP 问题?

标签 php javascript ajax json zepto

好吧,我似乎无法从我的 ajax 调用中解码 JSON,它将用户数据发布到我的 api,它是用 slim php 构建的..

这是我的ajax..

var jsonData;
jsonData = [
      {
        username: "user",
        password: "pass"
      }
    ];

$.ajax({
  type: "POST",
  url: "http://localhost/api/user/auth",
  data: {
    user: JSON.stringify(jsonData)
  },
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(data) {
    alert("You are good!");
  },
  error: function(xhr, type) {
    alert("Y U NO WORK?");
  }
});

这是我的 SLIM PHP 代码..

$app->post('/user/auth', function () use ($app) {
    try {
         $requestBody = $app->request()->getBody(); //This works

         //RequestBody is: user=%5B%7B%22username%22%3A%22user%22%2C%22password%22%3A%22pass%22%7D%5D         

         $json_a = json_decode($requestBody); //This doesn't work

         print_r($json_a); //Has no output?

         $username = $json_a['user']['username']; //Therefore this doesn't work?

    } catch(Exception $e) {
         echo '{"error":{"text": "'. $e->getMessage() .'"}}';
    }
});

正如你在注释中看到的,在代码中写的,requestBody 等于:

user=%5B%7B%22username%22%3A%22user%22%2C%22password%22%3A%22pass%22%7D%5D  

但是,我似乎无法解码它,因为 print_r($json_a) 没有效果。

非常感谢任何帮助,谢谢。

最佳答案

尝试

$params_str = urldecode($requestBody);
parse_str($params_str, $params_arr);
$user = json_decode($params_arr['user']);

关于php - Ajax + JSON 解码 + Slim PHP 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13144358/

相关文章:

php - 将字符串与 MySQL 列进行比较

php - Mysql Php登录问题

javascript - Jquery inArray 返回 false

python - 如何使用 AJAX 使用相同的 html 模板(使用 Python 和 Django)创建和编辑新帖子?

PHP:规范化不存在目录的路径以防止目录遍历?

php - 通知: Array to string conversion when including variable in query

javascript - Selenium Java 注入(inject)新的 Javascript 函数

javascript - 何时在 Sequelize promise 中使用 return ?

javascript - Django 中使用 ajax 的 Highcharts

jquery - Ajax 将列表作为字符串发送,而不仅仅是列表