【问题标题】:easyui return undefined from ajaxeasyui 从 ajax 返回 undefined
【发布时间】:2021-01-14 07:15:27
【问题描述】:

我提交表单,当我签入控制台时,它返回 JSON 数据。但我不能在 JSON 数据中使用对象。

$('#ff').form({
                type: 'POST',
                cache: false,
                url: base_url + 'Api/lapor/submit',
                dataType: 'json',
                iframe: false,
                onSubmit: function(param) {
                    param.id_item = sessionStorage.id_item;
                    param.token = sessionStorage.token;
                },
                onProgress: function(percent) {
                    $.messager.progress();
                },
                success: function(msg){
                  console.log(msg.status); //it will return undefined
                  $.messager.progress('close');
                },
                onLoadError: function(){
                    $.messager.alert('Error', 'Gagal', 'error');
                }
            });

我尝试console.log(msg),它返回 JSON 数据 console

【问题讨论】:

  • 仍然返回未定义
  • 尝试使用断点调试它,然后输入msg[ 以查看可能的选项,如此图像JSON datapossible option
  • @Kyojimaru 对不起,我不明白。我签入 XHR,它返回像这样的图像prnt.sc/wn6k5y

标签: jquery ajax jquery-easyui


【解决方案1】:

当您使用console.log(msg.status); 记录返回消息时,如果将结果写为{message: "Data 1 telah disimpan", status: true},那么您可以使用msg.statusmsg['status'] 调用它

但在您的情况下,它记录为{"message": "Data 1 telah disimpan", "status": true},因此您应该尝试使用包含的" 来调用它,例如msg['"status"']msg["\"status\""]

var msg1 = {"message": "Data 1 telah disimpan", "status": true}
var msg2 = {'"message"': "Data 2 telah disimpan", '"status"': true}

function checkdata1() {
  console.log(msg1);
  alert(msg1.message);
}

function checkdata2() {
  console.log(msg2);
  alert(msg2['"message"'])
}
<btn onclick="checkdata1()">Check Data 1</btn>
<br/>
<btn onclick="checkdata2()">Check Data 2</btn>

更新以下是使用console.log 登录时msg1msg2 之间的区别

更新2因为jeasyui$.form的返回类型是string,所以需要先用JSON.parse或者那个解析成JSON/javascript对象在jeasyui 文档部分找到处理提交响应 here

【讨论】:

  • 仍未定义。我在控制台中显示时的数据返回 msg1 {"message": "Data 1 telah disimpan", "status": true}
  • @DVCorps 如果它就像控制台中的 msg1,那么您应该使用 msg['"status"'],因为登录控制台时的 msg1 将显示为 {message: "Data 1 telah disimpan", status: true}。尝试打开您的控制台检查器并单击检查数据以查看日志中的差异
  • @DVCorps success: function(msg) { 里面的那个如果你把它改成console.log(msg) 会写什么,而不是 XHR 里面的那个
  • 非常感谢您的解释,但还是不行
  • @DVCorps 也许从您的日志结果返回的msg here 不是一个对象,因为它在日志结果旁边没有展开按钮►。也许您可以尝试将msg 设置为某个全局变量并在键入变量时尝试任何自动完成功能,或者先尝试JSON.Parse(msg)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
相关资源
最近更新 更多