将数据发布到页面并获取结果数据(跨域)

时间:2014-01-31 02:18:19

标签: javascript php jquery xmlhttprequest cross-domain

我正在使用blackbaud API,它说我需要将post数据发送到url以接收我想要的XML数据。

参考:https://www.blackbaud.com/files/support/helpfiles/FAFAPI/default.htm

我不太清楚如何做到这一点所以我使用了jQuery的POST方法并得到了跨域错误:

  

请求的资源

上没有'Access-Control-Allow-Origin'标头

以下是我用来发送请求的代码:

$(document).ready(function() {
$.post("https://www.kintera.org/api/Authentication/Login.ashx?accountid=xxxxx",
        {username: "xxxxxx", password:"xxxxxxx"},function(result) {
            console.log(result);
        });
})

这里有人能引导我朝着正确的方向前进吗?当我对页面执行简单的php发布时会显示xml结果,我只是不知道如何获取该信息供我自己使用。建议?

我遇到的最大问题是跨域错误

编辑: 弄清楚了。对于任何遇到相同问题的人来说,我的解决方案是使用curl

$ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://www.kintera.org/api/Authentication/Login.ashx?accountid=xxxxxxx");
  curl_setopt($ch, CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('username' => $username,'password' => $password)));

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  $result = curl_exec($ch);
  $xml = new SimpleXMLElement($result);
  curl_close($ch);

1 个答案:

答案 0 :(得分:0)

XHR(aka.Ajax)调用不允许是security reasons的跨域调用。但是有一种格式JSONP来处理这个问题。它基本上将您的JSON数据放在方法名称中,可以将其评估为回调并在应用程序中提供数据。

使用jQuery时,您可能需要查看this才能开始使用。