0

我没有在 php 和 ajax 中使用 JSON 的经验,我需要你的帮助。

我有一个验证用户输入的 php 页面......在使用 json 之前,我曾经将它们存储在一个数组中。当我将值存储在这样的数组中时,我能够解析 json $data = array("success"=>true, "msg"=>"my masg"); json_decode($data);

然后在我对成功函数的 ajax 调用中我 data.success 和 data.msg

如何在我的数组中存储多个消息或错误并在我的 ajax 调用中解析它们?这是我的代码

在这里我想验证用户输入,我想验证许多字段

    if(isset($_POST['txt_username']) &&($_POST['txt_username']!=""))
    {
        $username =trim( $_POST['txt_username']);
        $username  = filter_input(INPUT_POST, 'txt_username',
                    FILTER_SANITIZE_STRING);
    }
    else
    {

             }

那么我该如何在 else 语句中做到这一点呢?

这是我的ajax调用

 $.ajax({       
            type: "POST",
            dataType: "json",
            cache: false,
            data: {txt_username:$("#username").val(), txt_password:$("#password").val()},

            beforeSend: function(x) {

                if(x && x.overrideMimeType) {

                    x.overrideMimeType("application/json;charset=UTF-8");
                }

            },

            url: 'proccessing_forms/admin_login.php',

            success: function(data) {

                // parse the data
            }
    });


    }
4

2 回答 2

1

您可以为此使用多维数组:

$msg = array("success" => array(), "error" => array());

// ... DO you processing on if and else

//When you need to add to an success do
$msg['success'][] = "My Success";

//When you need to add to an error do
$msg['error'][] = "My error";


echo json_encode($msg); exit;

在 ajax 的成功事件中,您可以单独访问这两个变量。

success: function(data) {
    var errors = data.error;
    var succesess = data.success

    //Process each msg
    $.each(errors, function(index, msg) {
         console.log(msg);
    });
}
于 2013-09-15T23:45:34.273 回答
0

在 PHP 中,您可以像这样创建 JSON 字符串:

<?php

  $array["error"][] = "message1";
  $array["error"][] = "message2";

  echo json_encode($array);

?>

然后在 JavaScript 回调函数中,你可以像这样使用它:

  success: function(data) 
  {
    $.each(data, function(key, val) {
      alert(key + " - " + val);
    });
  }

当然,您应该注意到val由于我在 PHP 中的更改, now 是一个数组,您必须在其上运行另一个循环来获取您的内容:

  success: function(data) 
  {
    $.each(data, function(key, val) {
      $.each(val, function(key2, val2) {
        alert(key2 + " - " + val2);
      }
    });
  }
于 2013-09-15T23:40:49.480 回答