2017-08-10 17 views
1

私はPHPでフォーム検証を行い、エラーをajax呼び出しに送信します。 フォーム入力は、ajax呼び出しからphpコントローラに名前付きインデックスを持つ配列として投稿しました。そこではjson_decode()を使ってデコードしました。今、私はそれらの要素のそれぞれにアクセスし、それらの検証をしたいと思います。json_decode連想配列要素を検証できません

JS:

function init_order() 
{ 
    var noOfSims = $('#a_noofsims').val(); 
    var network = $('#a_network').val(); 
    var plan = $('#plan').val(); 
    var o_data={}; 
    o_data["a_noOfSims"]=noOfSims; 
    o_data["a_network"]=network; 
    o_data["plan"]=plan; 
    js_data=JSON.stringify(o_data); 
    $.ajax({ 
     url:"<?php echo site_url('sim_orders_ajax/add')?>/", 
     type:"POST", 
     dataType:"JSON", 
     data:{order_data:js_data}, 
     success:function(data) 
     { 
      alert(data.status); 
     }, 
     error:function (jqXHR, textStatus, errorThrown) 
     { 
      alert("Error in adding order"); 
     } 
    }); 

PHP:

public function add() 
{ 
    $order_data=$_POST['order_data']; 
    $j_data=json_decode($order_data, true); 
    $noOfSims = $j_data["a_noOfSims"]; 
    $network = $j_data["a_network"]; 
    $plan = $j_data["plan"]; 

    if($noOfSims=='') 
     $data="Error"; 
    else 
     $data="No Error" 

    echo json_encode(array("status" => $data)); 
} 

フォームを提出する上では、それは、Ajax誤差関数に行きます。検証コードスニペットを削除すると、それは成功関数に移動します。私は、json_decode連想配列の要素で何もできません。私は問題が何であるか理解していない。

EDIT

こんにちは、私はとても残念です。コメントで述べたように、問題を引き起こしていたのはタイプミスでした。助けてくれてありがとう!

+0

'あなたが持っている($ noOFims ==は、 '')'言及している場合、この '$ noOFims'変数? –

+0

typo ... '$ noOFims!= $ noOfSims' – charlietfl

+0

実際にjson_decode()から返される内容を確認するにはecho '$ j_data'を試してください –

答えて

1

データオブジェクトをjsonとして送信する必要はありません。あなたは自分のo_dataオブジェクトを送ることができるとjQueryはあなたのためのエンコード、それを形成します:

function init_order() { 

    var o_data = { 
    a_noOfSims: $('#a_noofsims').val(), 
    a_network: $('#a_network').val(), 
    plan: $('#plan').val() 
    }; 

    $.ajax({ 
    url: "<?php echo site_url('sim_orders_ajax/add')?>/", 
    type: "POST", 
    dataType: "JSON", 
    data: o_data, 
    success: ..... 
    }); 
} 

PHP

$noOfSims = $_POST["a_noOfSims"]; 
$network = $_POST["a_network"]; 
$plan = $_POST["plan"]; 

$data = empty($noOfSims) ? "Error" : "No Error"; 
echo json_encode(array("status" => $data));