我的问题可能有点令人困惑,但这就是我想做的事情。 我有一个脚本:
<script>
...some script here...
var audioPlaylist = new Playlist("2", [
{
name:"Lismore",
mp3:"http://example.com/song.mp3"
},
{
name:"The Separation",
mp3:"http://example.com/song1.mp3"
}
])
</script>
我想要做的是使用$ .get.JSON
动态生成该脚本var audioPlaylist = new Playlist("2", [
$.getJSON('http://www.example.com/users', function(data) {
$.each(data, function(i,item) {
document.write(name: ''item.fname'',)
document.write(mp3: "http://example.com/"''+item.song_id+''".mp3")
}):
});
])
在<script>
答案 0 :(得分:3)
有可能动态生成代码来执行此操作,但没有理由这样做。
只需使用map
方法将您从AJAX调用获得的数据数组转换为Playlist
对象所需的表单:
$.getJSON('http://www.example.com/users', function(data) {
var items = $.map(data, function(item) {
return { name: item.fname, mp3: "http://example.com/" + item.song_id + ".mp3" };
});
var audioPlaylist = new Playlist("2", items);
});
答案 1 :(得分:2)
试试这个:
//注意:getJSON调用是异步的,除非修改ajaxSettings使其同步,因此只有在getJSON的回调完成后才为audioPlaylist变量赋值。
var audioPlaylist = null;
$.getJSON('http://www.example.com/users', function(data) {
var playData = [];
$.each(data, function(i,item) {
playData.push({
name:item.fname,
mp3: "http://example.com/" + item.song_id + ".mp3"
});
audioPlaylist = new Playlist("2", playData);
alert(audioPlaylist);
});
});
答案 2 :(得分:0)
<script>
//Song Object
function Song(name, mp3){
this.name = name;
this.mp3 = mp3;
}
//Create array of Song objects
var songs = new Array();
//Populate it from the AJAX call
$.getJSON('http://www.example.com/users', function(data) {
$.each(data, function(i,item) {
songs.push(new Song(item.fname, "http://example.com/" + item.song_id + ".mp3"));
}):
});
//build the Playlist Object
var audioPlaylist = new Playlist("2",songs);
</script>
答案 3 :(得分:0)
如果您尝试更新数据,则上述答案最佳。如果你真的想要编写脚本到页面,首先要编写脚本文本,然后做一些简单的事情,如:
$('body').append("<script type='text/javascript'>alert('hello world');<\/script>");