【问题标题】:Converting JSON object into PHP array将 JSON 对象转换为 PHP 数组
【发布时间】:2018-06-27 17:07:55
【问题描述】:

我正在尝试将 JSON 对象转换为我的 PHP 脚本的 PHP 数组,但我不断收到一条错误消息,指出 json_decode 期望 1 个参数是一个字符串,但给定了数组。我试图对脚本进行序列化、tringify 和 json_encode,但没有任何效果。我的脚本是

<script>
$(document).ready(function(){
  $('form[id=ajax]').submit(function(event){
  event.preventDefault();

  //var form_data = $(this).serialize()
  var form_data = { 
      submit: $('input[name=submit]').val(),
      id: $('input[name=id]').val(),
      name: $('input[name=name]').val(),
      price: $('input[name=price]').val(),
      quantity: $('input[name=quantity]').val()
      };

  var json = json_encode(form_data);
    //console.log($json)
  $.ajax({
      url : 'test.php',
      type: 'POST',
      data : json
  });
 });
});
</script>

【问题讨论】:

  • ...那是 javascript 而不是 PHP...

标签: javascript json tostring


【解决方案1】:

您做错了,您需要添加 JSON.stringify 而不是添加 json_encode 这是一个 php 函数,用于将数组编码为 JSON 字符串广告您发送的是 JSON 对象而不是 JSON 字符串到你的 php 脚本。

<script>
$(document).ready(function(){
  $('form[id=ajax]').submit(function(event){
  event.preventDefault();

  //var form_data = $(this).serialize()
  var form_data = { 
      submit: $('input[name=submit]').val(),
      id: $('input[name=id]').val(),
      name: $('input[name=name]').val(),
      price: $('input[name=price]').val(),
      quantity: $('input[name=quantity]').val()
      };

  var json = JSON.stringify(form_data);
    //console.log($json)
  $.ajax({
      url : 'test.php',
      type: 'POST',
      data : json
  });
 });
});
</script>

进一步阅读JSON.stringify

【讨论】:

  • 我曾尝试使用 JSON.stringify 但这是输出 - array(0) { }
  • 检查您的 json 对象的控制台输出
  • 我可以在控制台看到字符串,谢谢你的代码。我给答案打了一个绿色的勾。你知道我如何将它转换成 PHP 数组吗?
  • 您需要使用 json_deocde 在 PHP 文件中接收该字符串。
  • var_dump(json_decode($_POST, true));这就是我得到的 - 警告:json_decode() 期望参数 1 是字符串,第 4 行给出的数组 NULL
猜你喜欢
  • 2014-11-09
  • 1970-01-01
  • 2017-09-13
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 2012-07-21
  • 2020-10-02
相关资源
最近更新 更多