1

我正在尝试将 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);
?>
4

3 回答 3

1

首先你不需要自己创建json

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

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

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

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

于 2012-10-10T08:43:17.797 回答
1

首先,在 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);
于 2012-10-10T08:34:00.733 回答
1
  1. 您尚未将要发送的数据编码为 JSON。您正在将一个对象传递给 jQuery 并允许它对其进行编码(as application/x-www-form-urlencoded)。您需要将数据编码为 JSON并将字符串传递给data:.
  2. json不是内容类型,application/json是。
  3. $_POSTapplication/x-www-form-urlencodedor填充multipart/form-data,它不包含原始发布请求。你需要使用php://input来获得它。
于 2012-10-10T08:35:12.160 回答