2013-04-02 62 views
0

我有一个链接调用jQuery .get()函数,该函数返回更多的jQuery脚本,该脚本将被附加到调用容器。数据正在被返回,但没有被执行,只是简单地打印到页面上。

呼叫:

$('<a/>').attr('href', "#").addClass('link-button').html("Add New").on('click', function() { 
    Loader.Show(); 
    $.get("webservice.php", {news: "addnew"}, function (data) {$("#page").empty().append(data);}); 
    return false; 
}); 

返回的数据:

$('<form/>').attr('action', "webservice.php").attr('method', "post").append(
    $('<input/>').attr('type', "hidden").attr('name', "news").val("add"), 
    $('<p/>').append(
     "Title:", 
     $('<input/>').attr('type', "text").attr('name', "title").attr('data-required', "true").on('focusout', function() { 
      if($(this).val() == "") {$(this).addClass('required');} else {$(this).removeClass('required');} 
     }) 
    ), 
    $('<p/>').append(
     "Text:", 
     $('<input/>').attr('type', "text").attr('name', "text").attr('data-required', "true").addClass('paragraph').on('focusout', function() { 
      if($(this).val() == "") {$(this).addClass('required');} else {$(this).removeClass('required');} 
     }) 
    ), 
    $('<p/>').append(
     $('<input/>').attr('type', "submit").val("Post"), 
     $('<span/>').addClass('availabletext') 
    ) 
).on('submit', function() { 
    Loader.Show("Posting..."); 
    $(this).find('[type=submit]').attr('disabled', "disabled"); 
    var gtg = true; 
    $(this).find('[data-required=true]').each(function() { 
     if($(this).val() == "") { 
      $(this).addClass('required'); 
      gtg = false; 
     } else { 
      $(this).removeClass('required'); 
     } 
    }); 
    if($(this).find('[data-type=vote]').val() == "No" && $(this).find('[data-type=comment]').val() == "") { 
     $(this).find('[data-type=comment]').addClass('required'); 
     gtg = false; 
    } else { 
     $(this).find('[data-type=comment]').removeClass('required'); 
    } 
    if(gtg) { 
     return true; 
    } else { 
     $(this).find('[type=submit]').removeAttr('disabled', "disabled"); 
     Loader.Hide(); 
     return false; 
    } 
}).ajaxForm({success: function (data, textStatus, jqXHR) { 
    $(this).parent().empty().append(data); 
}, error: function() { 
    $(this).append("Server timeout, please try again..."); 
    $("#submit-button").removeAttr('disabled'); 
    Loader.Hide(); 
}}); 

的问题是,返回的字面被打印到页面的代码,而不是被处理并执行。这可能吗?我错过了什么吗?

回答

2

尝试像这样:

jQuery.getScript('webservice.php?news=addnew', function() { 
    console.log('script loaded!'); 
}); 

http://docs.jquery.com/Ajax/jQuery.getScript

+0

这可能会有帮助,但我没有得到脚本页后退的问题。它正在获取页面来处理传入的脚本。基本上我试图得到'function(data){$(“#page”)。empty()。append(data); ''工作。从$(“#page”)。append($(''));'作品我想知道为什么前者不起作用,因为它本质上是做同样的事情...... – SnareChops

+0

jQuery.getScript ()应该按照你的要求处理脚本,你试过了吗?其他解决方案包括1)创建脚本元素,将src设置为适当的url并附加到文档的头部,或者2)将传入的代码包装在脚本标签中,如“”+ data +“” 。但是,由于您使用的是jQuery,因此getScript是您的正确选择。 – psychobunny