【问题标题】:Can I define the returned data and html markup in AJAX and use it in another AJAX script [closed]我可以在 AJAX 中定义返回的数据和 html 标记并在另一个 AJAX 脚本中使用它吗?
【发布时间】:2023-03-14 11:32:01
【问题描述】:

我正在尝试使用不同的 HTML 标记和数据解析两个不同页面上的 JSON 文件。我决定使用两个不同的 ajax 脚本。我想知道是否可以在其中一个脚本中将返回的数据和标记定义为一个函数,然后在另一个脚本中调用它:(FIDDLE)

第一个脚本:

var markupfunction;
$.ajax({
   url: "www.json.com",
   success: function (data) {
       item_html = parseData(feedformat,data);
   },
    error: function (){}     
});

function parseData(type, data) { 
  switch(type) {
    case 'case1':
     $(data).each(function (index, item) {
       markupfunction = function(){   //****Define the data****//
        item_html += '<h3 class="list">'+item.title+'</h3>';
       }

       markupfunction(); 
     });
    break;
  }

  return item_html;
}

第二个脚本

$.ajax({
    url: "www.json.com",
    success: function (data) {
        var length = 0;
        var items = data;
        items = items.map(function(item){
            return markupfunction(); //*****Calling the function*******//
        });
        var half = items.length/2;
        for(var i = 0; i < items.length; i++)
            if(i < half)
                $('.main').append(items[i]);
            else
                $('.second').append(items[i]); 
            length++;
        },

    error: function () {}        
});

它不工作。我收到Uncaught TypeError: undefined is not a function。有什么建议吗?

【问题讨论】:

  • 两个脚本会同时触发吗?您可能有竞争条件。
  • 我认为您对从何处访问变量感到困惑。如果你在一个函数中定义一个变量,它就不会在任何地方都可以访问。例如,第一个脚本中的item_htmlmarkupfunction 之外无法访问。
  • @Pow-lan,我确保它们不会立即被触发,因为第一个在 click 函数脚本中。
  • @Robin,在 ajax 脚本之外定义 markupfunction 后仍然无法正常工作。
  • 您可能想做的是查看handlebars。您的 2 个页面有 2 个不同的模板,然后您可以使用收到的数据轻松创建 html。

标签: javascript jquery html ajax json


【解决方案1】:

我通过更改标记函数原型修复/调整了您的脚本,...

markupfunction = function(index, item){
    if(arguments.length === 1) {
        item = index;
    }
    var itemMarkup = '<h3 class="list">'+item.title+'</h3>';
    item_html += itemMarkup;
    return itemMarkup;
};

小提琴中的完整示例:http://jsfiddle.net/z9LHB/11/

编辑

请注意Javascript变量定义范围。此处提供了有关变量范围的精彩教程:http://learn.jquery.com/javascript-101/scope/看看

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2012-10-30
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多