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