1

PHPスクリプトにJSONを送信しようとしていますが、何らかの理由でnullアラートメッセージが返されます。

私はStackOverflowや他のフォーラム全体を検索し、他の人の例を使用しましたが、どういうわけか私はそれを間違え続けています。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

まず、フォームデータを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に渡し、それを(としてapplication/x-www-form-urlencoded)エンコードできるようにします。データをJSONとしてエンコードし、文字列をに渡す必要がありますdata:
  2. jsonコンテンツタイプではありませんapplication/json
  3. $_POSTapplication/x-www-form-urlencodedまたはから入力されmultipart/form-dataますが、生のPOSTリクエストは含まれていません。あなたはそれを得るために使う必要がありますphp://input
于 2012-10-10T08:35:12.160 に答える
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 に答える