2013-05-06 72 views
0

Hayush! 一直试图将我的Chrome扩展程序转移到清单2.除了一个调用ajax的脚本外,一切正在工作。我有一个包含需要传输到服务器的JSON内容的变量。Chrome扩展程序传输到清单2 - 无Ajax响应

function sendlist(list){ 

jsontext = JSON.stringify(list); 

$.ajax({ 
     url: amfurl + "user/listbookmarks/", 
      dataType: 'text json', 
     async: true, 
     type: 'POST', 
     processData: false, 
      data: {'folders': jsontext}, 

     success: function(data){ 
      $('#importing').css('display','none'); 
      $('#importdone').css('display','block'); 
      console.log(data);  
     }, 
     error: function(xhr, status, error) { 
      var err = eval("(" + xhr.responseText + ")"); 
     alert(err.Message); 
} 
}); 
} 

出于某种原因,ajax部分根本不被执行。没有错误消息被触发,也没有在服务器错误日志中。

popup.js中包含了所有内联脚本和脚本。所以这可能不是问题。

有什么想法?

谢谢!

下面的代码工作完全在以前的清单

function importbookmarks(){ 
$('#formadd').css('display','none'); 
$('#importing').css('display','block'); 
_gaq.push(['_trackEvent', 'chromextension','importbookmarks', username]); 
chrome.bookmarks.getTree(function(bookmarks) { 
     sendlist(bookmarks); 
    }); 
} 


function sendlist(list){ 
jsontext = JSON.stringify(list); 
$.ajax({ 
     url: amfurl + "user/listbookmarks/", 
      dataType: 'text json', 
     async: true, 
     type: 'POST', 
    // processData: false, 
      data: {'folders': jsontext}, 

     success: function(data){ 
      $('#importing').css('display','none'); 
      $('#importdone').css('display','block'); 
      console.log(data); 

     } 
}); 
} 
+0

工作,不要使用eval的代码,但'JSON.parse'(EVAL由默认CSP禁止)。您正在执行JSONP请求而不是JSON的任何更改?您是否在清单文件中请求主机权限? – 2013-05-06 15:29:11

+0

用JSON.parse替换了eval。在异步之上应用jsonp:false,并在权限中设置页面。似乎它根本不执行ajax。页面上的其他脚本也可以工作。 – Row1e 2013-05-08 15:56:29

+0

您是否在您的最后评论中使用'书签'而不是'jsonlist'? – 2013-05-08 15:58:37

回答

0

的问题是不是与功能。按钮执行没有正确调用它。 这里是我用来获取功能清单2

document.addEventListener("DOMContentLoaded", function() { 
    document.getElementById("import-bookmarks").addEventListener("click", function() { 
     importbook();return; 
    });