我正在使用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);
答案 0 :(得分:0)
XHR(aka.Ajax)调用不允许是security reasons的跨域调用。但是有一种格式JSONP来处理这个问题。它基本上将您的JSON数据放在方法名称中,可以将其评估为回调并在应用程序中提供数据。
使用jQuery时,您可能需要查看this才能开始使用。