【问题标题】:How to properly retrieve a JSON string with PHP?如何使用 PHP 正确检索 JSON 字符串?
【发布时间】:2012-09-30 16:10:59
【问题描述】:

我正在尝试将 JSON 发送到我的 PHP 脚本,并且由于某种原因在警报消息中返回 null

我在 Stack Overflow 和其他论坛中进行了搜索,并使用了其他人的示例,但不知怎的,我总是弄错。我签入了 Firebug,请求正在发送中。我对处理 JSON 查询非常陌生。

谁能指出我做错了什么,以便我下次学习?

我的 JQuery 代码:

  var name = $('#formName').val();
  var regno = $('#formRegNo').val();
  var charityinfo = $('#formCharityInfo').val();
  var searchimprove = $('#formSearchImprove').val();
  var finantialaid = $('#formFinantialAid').val();
  var contactname = $('#formContactName').val();
  var contactphonenumber = $('#formContactPhoneNumber').val();
  var contactfaxnumber = $('#formContactFaxNumber').val();
  var contactemail = $('#formContactEmail').val();
  var website = $('#formWebsite').val();
  var address = $('#formAddress').val();
  var postcode = $('#postCode').val();

    var arrayData = {"name":name,"regno":regno,"charityinfo":charityinfo,"searchimprove":searchimprove,"finantialaid":finantialaid,"contactname":contactname,"contactphonenumber":contactphonenumber,"contactfaxnumber":contactfaxnumber,"contactemail":contactemail,"website":website,"address":address,"postcode":postcode};
    console.log(name);

    $.ajax({  
  url: "test.php",  
  type: "POST",  
  dataType: "json",  
  contentType: "json",  
  async: false,
  data: arrayData,
 success : function(response) {                            
                    alert(response);            
              },
              error: function(){
                    alert("error");
              }
  }); //End AJAX

我的 PHP 代码:

<?php
$return = $_POST;
echo json_decode($return);
?>

【问题讨论】:

  • $_POST 是数组。使用 $return = $_POST['data'];
  • datd 已经解码。您可以使用print_r($_POST) 将它们打印出来

标签: php jquery ajax


【解决方案1】:

首先,一步收集表单数据,将其序列化为 json:

var arrayData = $('#my_form_id').serialize();

如果您发布您的数据,您应该发布适当的发布变量名称。添加一些更具描述性的错误处理:

$.ajax({  
      url: "/test.php",  
      type: "POST",  
      data: 'mydata = ' + arrayData,
      success : function(response) {                            
        alert(response);            
      },
      error: function (xhr, ajaxOptions, thrownError) {
        alert(thrownError);
      }
    });

然后在php端捡起来:

$mydata = $_POST['mydata'];
$arrayData = json_decode($mydata);
var_dump($arrayData);

【讨论】:

    【解决方案2】:
    1. 您尚未将要发送的数据编码为 JSON。您正在将一个对象传递给 jQuery 并允许它对其进行编码(如application/x-www-form-urlencoded)。您需要 encode your data as JSON 并将字符串传递给 data:
    2. json 不是内容类型,application/json 是。
    3. $_POSTapplication/x-www-form-urlencodedmultipart/form-data 填充,它不包含原始发布请求。您需要使用 php://input 来获得它。

    【讨论】:

      【解决方案3】:

      首先你不需要自己创建json

      使用JSON.stringify()函数函数创建JSON

      或者你也可以使用jquery serialize()函数

      var arrayData=$("FORMID").serialize();
      $.ajax({  
        url: "test.php",  
        type: "POST",  
        dataType: "json",  
        contentType: "json",  
        async: false,
        data: arrayData,
        .....
      

      并使用json_decode()函数解码这个json服务器端

      【讨论】:

        猜你喜欢
        • 2021-01-02
        • 2021-02-20
        • 2013-02-09
        • 1970-01-01
        • 2017-11-26
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 1970-01-01
        相关资源
        最近更新 更多