【问题标题】:Why is my JSON response from CodeIgniter not readable in JavaScript?为什么我的来自 CodeIgniter 的 JSON 响应在 JavaScript 中不可读?
【发布时间】:2017-11-11 17:56:55
【问题描述】:

我使用 CodeIgniter 控制器将数据存储在“响应”中,这是:

{
  "ok": false,
  "messages": {
    "cgusrnm": "<p class=\"text-danger\">The Full Name field is required.<\/p>",
    "cgnnm": "<p class=\"text-danger\">The Nick Name field is required.<\/p>",
    "cgeml": "<p class=\"text-danger\">The Email Address field is required.<\/p>",
    "cgunm": "<p class=\"text-danger\">The User Name field is required.<\/p>",
    "cgpsd": "<p class=\"text-danger\">The Password field is required.<\/p>",
    "ccgpsd": "<p class=\"text-danger\">The Confirm Password field is required.<\/p>",
    "cgcnm": "<p class=\"text-danger\">The Company Name field is required.<\/p>",
    "cgadr": "<p class=\"text-danger\">The User Address field is required.<\/p>",
    "cgct": "<p class=\"text-danger\">The City field is required.<\/p>",
    "cgcnt": "<p class=\"text-danger\">The Country field is required.<\/p>",
    "cgzn": "<p class=\"text-danger\">The State field is required.<\/p>",
    "cgzc": "<p class=\"text-danger\">The Zip Code field is required.<\/p>",
    "cgpn": "<p class=\"text-danger\">The Phone Number field is required.<\/p>",
    "cgsn": "<p class=\"text-danger\">The Skype Name field is required.<\/p>",
    "pm": "<p class=\"text-danger\">The Payment Method field is required.<\/p>",
    "cgpeml": "<p class=\"text-danger\">The Email Address field is required.<\/p>"
  }
}

但是 ajax 文件无法读取这个数组。

我的 ajax 代码:

$('#form_user').submit(function(e) {
  e.preventDefault();

  var me = $(this);

  $.ajax({
    url: me.attr('action'),
    type: 'post',
    data: me.serialize(),
    datatype: 'json',
    success: function(response) {
      if (response.ok == true) {
        alert('response');
      } else {
        $.each(response.messages, function(key, value) {
          var element = $('#' + key);
          element.after(value);
        });
      }
    }
  });
});

【问题讨论】:

  • 可能是response.data.okconsole.log 取出response 的值并调查其结构。
  • 我流这个教程youtu.be/H1sHOvc8au0
  • 我不是在看 YouTube 教程来回答这个问题。用console.logresponse的值是多少。相应地调整代码。
  • 我不清楚。

标签: php jquery json ajax codeigniter


【解决方案1】:

即使数据类型是 json,response 变量的类型仍然是字符串。尝试添加 response = JSON.parse(response); 以将字符串转换为 JavaScript 对象。

【讨论】:

  • 非常感谢。
  • 原因是您将其称为datatype 而不是dataTypedatatype 什么都不做。您可以去掉 JSON.parse 并将其更改为 dataType
【解决方案2】:

message 不是一个数组而是一个对象。 JSON 数组看起来像 {message:["a","b"]}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-07-19
  • 2016-09-01
  • 2012-11-21
  • 1970-01-01
  • 2018-06-11
  • 2017-04-02
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多