我有一个独特的情况。我们正在使用Ytel的X5云联络中心。他们有一个API,允许我们将人员添加到我们的数据库。
您通过GET将数据发送到API(奇怪,我知道,但我无法控制服务器,因为它由Ytel拥有)。
所以我有URL编码了我的所有字段。我知道结果字符串是正确的,因为如果我复制字符串并将其粘贴到我的浏览器并点击回车,我会收到成功消息。
成功消息是纯文本。
调用此类API的正确方法是什么?
我尝试使用jQuery / Ajax,但一直得到“Allow-Control-Access-Origin标头不存在,因此不允许localhost ......”。所以我尝试将“数据类型”设置为“jsonp”。
jQuery.ajax({
url: ytelPostingString,
cache: false,
type: "POST",
dataType: "jsonp",
//What do you want to do when the request succeeds?
success: function(result) {
console.log(result);
console.log("Success");
},
//What do you want to do when the request fails?
error: function(result) {
console.log("Error:" + result);
console.log("Failure");
}
});
这很有效!它成功地将数据放入数据库,唯一的缺点是,服务器的响应不是jsonp,它是纯文本。因此,即使api请求成功,也将始终调用“错误”回调,因为ajax期望返回jsonp对象。
所以现在我正在尝试通过PHP进行API调用,但我仍然不知道“正确”的方法是什么?
是否可以在javascript(或PHP)中“打开”网页并将输出(又称“网页”)存储到变量中,然后我可以对其进行评估?
另一个有趣的注意事项,如果我在文件_get_contesnts(URL)之前调用urlencode(URL)或rawurlencode(URL),则file_get_contents将失败。由于某种原因,urlencode和rawurlencode会包含:和/会导致file_get_contents失败。任何想法?
答案 0 :(得分:0)
任何人都会在未来阅读这篇文章:
我必须将我的值发布到我的服务器上的php脚本,并使用PHP进行API调用。就像调用file_get_contents($URL);
注意:为了让file_get_contents();
处理URL,必须在PHP.ini文件中将“allow_fopen_url”设置为“yes”。
答案 1 :(得分:0)
type: "POST"
用户dataType: "jsonp"
。Allow-Control-Access-Origin header is not present
,因此请尝试使用此插件来允许来自原点:适用于Google Chrome:https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi
Firefox的