2016-10-05 10 views
0

私はフォームとデータを含む配列を持っています。私はこれらのオブジェクトを私のPHPスクリプトに投稿しようとしています。 Iは、フォームおよびアレイをポストするために使用していたコードを以下に示す:私は以下を使用してアレイをデコードすることができる午前PHPスクリプトでAjaxで複数のオブジェクトをポストし、PHPで取得する

var json_data = JSON.stringify(data_vendor); //array to be posted 

$.ajax({          
    url: '/crm/inventory/add_purchase_order.php',    
    type: 'POST', 
    data: {data_vendor:json_data,form_data:$("#purchase_orderform").serialize()},  
    dataType: 'json',  

$vendor_codes = json_decode($_POST["data_vendor"],true); 

形態は/複数のフィールドを含んでいますそのうちの1つを「order_quantity」と呼ぶ。

$order_quantity = $_POST["order_quantity"]; 

データの読み込みにNULLが表示されます。

(i)複数のオブジェクト/文字列を正しく転記するのに正しい方法が使用されていますか? (ii)フォーム入力の取得に使用するメソッドは正しいですか?

+1

order_quantityはform_dataにネストされていますか? '$ _POST ['form_data'] ['order_quantity']'を試してみてください。 –

+0

投稿をデコードした場合は、$ vendor_codes ['order_quantity']を試してみてください。 – MCMXCII

+0

上記2のどちらも動作しません。 – user2810718

答えて

1

通常、serialize()を使用すると、すべてが送信されます。なぜなら、これはURLエンコードされた文字列であるためです。そして、フォームコントロール名は$_POST

でキーとして使用可能です。しかし、あなたは現在、唯一の$ _POST ... $_POST["data_vendor"]$_POST["form_data"]

$_POST["form_data"]に利用できる2つの鍵を持っていることは、あなたがそれも必要serialize()でやったURLエンコード文字列です。手動

だけ$_POST["form_data"]のダンプを行い、これを検証するために

$formData = urldecode($_POST["form_data"]); 
$order_quantity = $formData ['order_quantity']; 

を試してみて、今デコードされます配列ではないことがわかります

+0

あなたはparse_strについて考えています – Musa

+0

@Musa確かに$ _POST ["form_data"]は、シリアル化されたフォーム:&order_quantity = 43&....に投稿されたajax文字列を返します。 '$ order_quantity = $ formData [' order_quantity '];'文字oを返します。 plzアシスト – user2810718

+0

はJSON.stringify($( "#purchase_orderform")serializArray()) 'をjsで使用し、バックエンドのjson_decodeを使用する方が簡単かもしれません。 – charlietfl

関連する問題