【问题标题】:Unable to validate json_decode associative array elements无法验证 json_decode 关联数组元素
【发布时间】:2017-08-10 12:09:38
【问题描述】:

我想在 php 中进行表单验证并将任何错误发送到 ajax 调用。 我将表单输入作为一个数组发布,其中包含从 ajax 调用到 php 控制器的命名索引。在那里,我使用 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 错误功能。如果我删除验证码 sn-p,它将进入成功功能。我无法对 json_decode 关联数组中的元素做任何事情。我不明白问题是什么。

编辑

嗨,我很抱歉。正如 cmets 中提到的,这是导致问题的错字。感谢您的帮助!

【问题讨论】:

  • if($noOFims=='') 你在哪里提到过这个$noOFims 变量?
  • 错字...$noOFims != $noOfSims
  • 尝试 echo '$j_data',看看 json_decode() 实际返回什么
  • 看来你的逻辑是错误的......因为只有当你的服务器端代码有任何异常时它才会进入错误函数......但在这种情况下你只是从服务器返回一个对象
  • 我在您的问题中没有看到任何关于您发送的 JSON 有效性的证据。愿意展示一些实际的 JSON,以便我们可以看到您的代码正在发送和接受什么? (同样在安全说明中,永远不要相信用户输入。你有零保证你的 php 发送的 JSON 是安全的 - 验证一切)

标签: javascript php jquery json ajax


【解决方案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));

【讨论】:

    猜你喜欢
    • 2022-06-30
    • 2021-07-20
    • 2015-07-16
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多