【问题标题】:How to detect JSON object?如何检测 JSON 对象?
【发布时间】:2018-12-15 07:40:38
【问题描述】:

我可以检测一个 JSON 对象并根据它的对象显示一条消息吗?

我试过这样但它不起作用:(

$.ajax({
    type: "POST",
    url: "example.php",
    data: form_data,
    success: function(data) {

      if(data.has("error")){
          alert('Invalid data')
      } else {
          alert('Correct data')  
      };

    }
});

如果输入的数据有误,数据会在控制台中显示如下:

{"object":"error","type":"wrong_number"...

如果这个对象包含错误,我想显示错误信息。否则,继续

【问题讨论】:

  • 你需要if (response.has('error')),而不是data。您正在向服务器发送data,并且可以使用success 函数的第一个参数访问服务器的响应。您还需要 example.php 周围的引号
  • 你只是想做if(data.object === "error")吗?也就是说,您想检测一个格式正确、描述应用程序级错误的 JSON 响应,对吧?
  • @Rohalt .has 是什么?对于 jquery,data 将是一个数组、一个对象或一个字符串。这些东西都没有has 方法。
  • @Rohalt 当您在控制台登录 data 时,它是显示为字符串还是数组?

标签: javascript json ajax if-statement


【解决方案1】:

请务必在 ajax 请求中将 dataType 设置为 'json',以便在传递给成功处理程序之前将数据解析为 json。

$.ajax({
    type: "POST",
    url: "example.php",
    data: form_data,
    dataType: "json",
    success: function(data) {

      if(data.has("error")){
          alert('Invalid data')
      } else {
          alert('Correct data')  
      };

    }
});

【讨论】:

  • 虽然这是问题的一部分,但仍然存在不存在的 .has() 方法。
【解决方案2】:

json 对象是 Object 类型,因为您将收到任何内容,如果 typeof(jsonObj) == Object,您将不知道它是 json 对象还是只是一个对象,但您可以做的是,阅读请求中的 headers,如果是 application/json,它将是一个 json 对象。

另外,你可以在 json 对象中添加一个属性,比如

  var obj = {
    customProp: 'Whatever property you want',
    data: {
    childData: childData
    }

}

我刚刚正确理解了你的问题。

在请求中有一个成功响应和一个错误响应

成功响应为 response.status

你可以做的是,在你服务器上函数的响应中,检测对象,如果正确就发送响应,如果不是,发送一个错误对象

error = {errorText: 'Your form is not correct'}

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多