如何在jquery中调用外部URL?
我试图用jquery在Facebook墙上发表评论。
但是我的ajax呼叫没有外部URL。
任何人都可以解释我们如何使用外部URL与jquery?
下面是我的代码:
var fbUrl="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token"; $.ajax({ url: fbURL , data: "message="+commentdata, type: 'POST', success: function (resp) { alert(resp); }, error: function(e){ alert('Error: '+e); } });
它给出了xmlhtttprequest错误。
所有这些答案都是错误的!
就像我在评论中说的那样,你因为URL失败了“ 同源策略 ”而得到错误的原因,但是你仍然可以使用AJAX函数来打击另一个域,看看Nick Cravers对这个类似问题的回答 :
您需要通过添加&callback =?来触发$ .getJSON()的JSONP行为? 在查询字符串上,像这样:
$.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles="+title+"&format=json&callback=?", function(data) { doSomethingWith(data); });
你可以在这里测试一下。
如果不使用JSONP,您就会遇到阻止XmlHttpRequest获取任何数据的同源策略。
考虑到这一点,以下代码应该工作:
var fbURL="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token"; $.ajax({ url: fbURL+"&callback=?", data: "message="+commentdata, type: 'POST', success: function (resp) { alert(resp); }, error: function(e) { alert('Error: '+e); } });
这是跨站点脚本问题。 常见的现代浏览器不允许向另一个URL发送请求。
谷歌javascript同源政策
简而言之,您尝试使用的URL必须具有相同的根和协议。 所以http://yoursite.com无法访问https://yoursite.com或http://anothersite.com
你是绝对必须绕过这种保护(这是在浏览器级别,正如加利米指出的那样),考虑你最喜欢的Web服务器的ProxyPass模块。
我认为唯一的方法是使用像MANOJ和Fernando建议的internel PHP代码。
curl post / get in php file in your server – >用ajax调用这个php文件
PHP文件让我们说(fb.php):
$commentdata=$_GET['commentdata']; $fbUrl="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token"; curl_setopt($ch, CURLOPT_URL,$fbUrl); curl_setopt($ch, CURLOPT_POST, 1); // POST data here curl_setopt($ch, CURLOPT_POSTFIELDS, "message=".$commentdata); // receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec ($ch); echo $server_output; curl_close ($ch);
比使用AJAX GET
fb.php?commentmeta=your comment goes here
来自你的服务器。
或者使用externel服务器上的简单HTML和JavaScript执行此操作:
Message:
你好url应该调用一个函数,作为回报将给出响应
$.ajax({ url:'function to call url', ... ... });
尝试使用/调用API facebook方法
按照以下简单步骤,您将获得结果
步骤1-在后端创建一个内部函数getDetailFromExternal 。 步骤2-在该函数中,使用类似下面的cUrl函数调用外部URL
function getDetailFromExternal($p1,$p2) { $url = "http://request url with parameters"; $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true )); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $output = curl_exec($ch); curl_close($ch); echo $output; exit; }
步骤3-使用javascript / jquery Ajax从前端调用内部函数。