如何在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); } }); 

JQuery和PHP

在PHP文件“contenido.php”中:

  

在html中:

   Get Google 

这是跨站点脚本问题。 常见的现代浏览器不允许向另一个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从前端调用内部函数。