سؤال

أحاول وضع التعليقات على Wall باستخدام JQuery.

لكن بلدي Ajax يدعو إلى url 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 لضرب مجال آخر ، انظر يجيب نيك كرايرز على هذا السؤال المماثل:

تحتاج إلى تشغيل سلوك JSONP باستخدام $ .getjson () عن طريق إضافة ورد الاتصال =؟ على Querystring ، مثل هذا:

$.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":

<?php
$mURL = $_GET['url'];

echo file_get_contents($mURL);
?>

في HTML:

<script type="text/javascript" src="js/jquery/jquery.min.js"></script>
<script type="text/javascript">
    function getContent(pUrl, pDivDestino){
        var mDivDestino = $('#'+pDivDestino);

        $.ajax({
            type : 'GET',
            url : 'contenido.php',
            dataType : 'html',
            data: {
                url : pUrl
            },
            success : function(data){                                               
                mDivDestino.html(data);
            }   
        });
    }
</script>

<a href="#" onclick="javascript:getContent('http://www.google.com/', 'contenido')">Get Google</a>
<div id="contenido"></div>

هو عبر موقع البرمجة مشكلة. المتصفحات الحديثة المشتركة لا تسمح بإرسال طلب إلى عنوان URL آخر.

Google سياسة الأصل JavaScript

باختصار ، يجب أن يكون عنوان URL الذي تحاول استخدامه نفس الجذر والبروتوكول. لذاhttp://yoursite.comلا يمكن الوصولhttps://yoursite.com أوhttp://anothersite.com

هل يجب عليك تجاوز هذه الحماية على الإطلاق (التي تقع على مستوى المتصفح ، كما أشار Galimy) ، فكر في وحدة ProxyPass لخادم الويب المفضل لديك.

أعتقد أن الطريقة الوحيدة هي استخدام رمز PHP Internel مثل Manoj و Fernando يقترح.

POST/GET CURL في ملف PHP على الخادم الخاص بك -> اتصل على ملف PHP هذا مع AJAX

ملف PHP LET SLEE (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 للوصول إلى

fb.php?commentmeta=your comment goes here

من الخادم الخاص بك.

أو قم بذلك باستخدام HTML و JavaScript البسيط من خادم Externel:

Message: <input type="text" id="message">
<input type="submit" onclick='PostMessage()'>
<script>
function PostMessage() {
var comment = document.getElementById('message').value;
    window.location.assign('http://yourdomain.tld/fb.php?commentmeta='+comment)
}
</script>

مرحبًا ، يجب أن يكون عنوان URL استدعاء وظيفة ستعطي الاستجابة في المقابل

$.ajax({
url:'function to call url',
...
...

});

حاول استخدام/استدعاء طريقة API Facebook

اتبع الخطوات البسيطة أدناه التي ستتمكن من الحصول على النتيجة

الخطوة 1- إنشاء وظيفة داخلية واحدة getDetailfromexternal في نهايتك الخلفية. الخطوة 2- في هذه الوظيفة ، اتصل بعنوان 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top