【发布时间】: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_html在markupfunction之外无法访问。 -
@Pow-lan,我确保它们不会立即被触发,因为第一个在 click 函数脚本中。
-
@Robin,在 ajax 脚本之外定义
markupfunction后仍然无法正常工作。 -
您可能想做的是查看
handlebars。您的 2 个页面有 2 个不同的模板,然后您可以使用收到的数据轻松创建 html。
标签: javascript jquery html ajax json