【问题标题】:Ajax appearing as undefinedAjax 显示为未定义
【发布时间】:2017-05-04 13:04:58
【问题描述】:

所以我目前正在开发这个网站应用程序,我正在尝试使用来自大学网站和 AJAX 的 JSON 来显示我的大学中有多少 PC 可用。我无法弄清楚,但它显示了第一个房间的所有 MAC,然后它对其他房间说未定义,它都是一个代码块,所以我看不出它哪里出错了,任何建议都会很棒。

JS:

    var container = $('div.container');
$('input#get').click(function(){
    $.ajax({
        type: 'GET',
        url: '(mylink)',
        dataType: 'jsonp',
        success: function(data) {
        $.each(data, function(index, item) {
        $.each(item, function(key, value) {
            container.append('<div class="pcsinside">' + value.displayName + '</div>' + 'PCs available:' + '&nbsp' + value.availPCs + '&nbsp' + 'out of' + '&nbsp' + value.numPCs + '<br/>' + 'Macs available:' + '&nbsp' + value.availMacs + '&nbsp' + 'out of' + '&nbsp' + value.numMacs + '<br/>');
           });

          });

         }
     });
})

HTML:

<div class="container">
            <div id="form-area">
            <input id="get" type="submit" value="Press For PC Availability">
            </div>
            <div class="pcsinside">
            </div>
        </div>

这就是它的样子,每当 PC 更改 PC 和 MAC(未定义的 MAC 除外)时,它都会更新。

它适用于第一个,但不适用于其他 MAC,这是怎么回事?任何帮助将不胜感激,谢谢大家。

【问题讨论】:

  • value.availMacs 不正确,请检查您的 json 响应
  • 先用console.log查看数据和item,这里也提供数据json

标签: jquery html json ajax undefined


【解决方案1】:

首先在 dataType 中放置“jsonp”而不是“json”。 S Jayesh 是对的,你必须字符串化才能看到答案。请参阅此示例。

$.ajax({
    url: "blabla.php",
    data: data,
    type: 'POST',
    contentType: "application/x-www-form-urlencoded",
    dataType: 'json',
    error: function(data){
        var err = JSON.stringify(data);
alert(err);
    },
    success: function(data){
        var succ = JSON.stringify(data);
alert(succ);
    }
});

通过这种结构,您会发现问题所在。用post代替get,这样更好。

【讨论】:

  • 我不能使用 json,我需要 jsonp,否则它会被 CORS 策略阻止。
  • 我不确定,在 jsonp 上,你能字符串化吗?测试一下。如果可以,请使用相同的方法来测试问题。因为现在,您必须针对您的问题。最糟糕的是,尝试了很多事情。成功删除所有内容,如果字符串化不起作用,只需使用“成功”之类的警报测试您的答案。添加错误部分并放置警报“错误”。就像我告诉你的那样替换php的一部分并测试你的答案,就是这样。这样你就确定了。在尝试另一个测试之后。其他可能性,尝试在本地主机上使用纯 json 并在转换为 jsonp 之后。正如我所读到的,jsonp 非常相似,不像填充。祝你好运
【解决方案2】:

要将 JSON 显示为字符串,您需要使用 JSON.stringify() 函数:

container.append('<div>'+ JSON.stringify(value.displayName) +'</div>');

【讨论】:

  • 我试过了,但没有用,但我感谢您的反馈。 :)
  • 在成功函数中:var results = JSON.parse(data); var lengthOfData = results.length; 然后您可以使用简单的 for 循环进行迭代(例如,i 作为迭代器),然后将值作为 var displayNmae = JSON.stringify(results[i]["displayNameKey"]); 我正在考虑你的 data 是一个 JSON 数组。
猜你喜欢
  • 1970-01-01
  • 2018-05-03
  • 2023-02-21
  • 2012-04-20
  • 2021-12-25
  • 2021-05-12
  • 2019-05-22
  • 2014-01-03
  • 1970-01-01
相关资源
最近更新 更多