我可以在AJAX中定义返回的数据和html标记,并在另一个AJAX脚本中使用它

时间:2014-05-05 14:55:01

标签: javascript jquery html ajax json

我试图在具有不同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。有什么建议吗?

1 个答案:

答案 0 :(得分: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/查看