2012-02-24 32 views
0

我想要构建一个小书签,它允许我将当前页面的URL发送到一个php文件,获取确认响应并将其显示给用户。小书签中的Ajax请求

我尝试了几件事情,只有一种方法工作,它成功地发送请求,但它没有显示响应。

javascript: (function (e, a, g, h, f, c, b, d) { 
    if (!(f = e.jQuery) || g > f.fn.jquery || h(f)) { 
     c = a.createElement("script"); 
     c.type = "text/javascript"; 
     c.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + g + "/jquery.min.js"; 
     c.onload = c.onreadystatechange = function() { 
      if (!b && (!(d = this.readyState) || d == "loaded" || d == "complete")) { 
       h((f = e.jQuery).noConflict(1), b = 1); 
       f(c).remove() 
      } 
     }; 
     a.documentElement.childNodes[0].appendChild(c) 
    } 
})(window, document, "1.3.2", function ($, L) { 
    $.get("http://mysite.com/recommend.php", { 
     url: encodeURIComponent(document.URL) 
    }, function (data) { 
     if (data.error) { 
      alert('Looks like someone else added this site just before you did, Thank you though!'); 
     } else { 
      alert(document.URL + ' successfully added!'); 
     } 
    }, 'json'); 
}); 

有没有反正我可以得到这个工作?我读过有关原产地政策的地方 - 有没有其他方法可以实现我想要做的 - 目标是建立一个书签,与服务器通信并显示响应。

回答

4

您不能使用标准的Ajax跨域。浏览器执行“相同的域”策略。您必须使用JSONP。 http://en.wikipedia.org/wiki/JSONP

搜索此页 “JSONP” 上手如何使用jQuery与JSONP:http://api.jquery.com/jQuery.ajax/

一个更简单的解决方案可能是这样的:

var recURL='http://mysite/com/recommend.php?url=' 
    + encodeURIComponent(document.URL); 
document.body.appendChild(document.createElement('script')).src=recURL; 

recommend.php应返回的Javascript代码如:alert(document.URL + ' successfully added!');