我正在尝试在Dynamics CRM 2011中实现短信功能。我为此创建了一个自定义活动,并在短信表单中添加了一个按钮。按下按钮时,应发送短信。
我需要为此发出一个http请求并传递一些参数。这是触发的代码:
function send() {
var mygetrequest = new ajaxRequest()
mygetrequest.onreadystatechange = function () {
if (mygetrequest.readyState == 4) {
if (mygetrequest.status == 200 || window.location.href.indexOf("http") == -1) {
//document.getElementById("result").innerHTML = mygetrequest.responseText
alert(mygetrequest.responseText);
}
else {
alert("An error has occured making the request")
}
}
}
var nichandle = "MT-1234";
var hash = "md5";
var passphrase = "[encryptedpassphrase]";
var number = "32497123456";
var content = "testing sms service";
mygetrequest.open("GET", "http://api.smsaction.be/push/?nichandle=" + nichandle + "&hash=" + hash + "&passphrase=" + passphrase + "&number=" + number + "&content=" + content, true)
mygetrequest.send(null)
}
function ajaxRequest() {
var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
if (window.ActiveXObject) { //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
for (var i = 0; i < activexmodes.length; i++) {
try {
return new ActiveXObject(activexmodes[i])
}
catch (e) {
//suppress error
}
}
}
else if (window.XMLHttpRequest) // if Mozilla, Safari etc
return new XMLHttpRequest()
else
return false
}
我在线上获得了“访问被拒绝错误”:
mygetrequest.open("GET", "http://api.smsaction.be/push/?nichandle=" ......
感谢任何帮助。
答案 0 :(得分:4)
检索站点必须批准跨域AJAX请求。通常情况并非如此。
您应该联系smsaction.be或查看他们的常见问题解答,看看他们是否有任何实施。
通常JSONP用于跨域请求,这必须在两端实现。
解决此问题的一个好方法是使用您自己的网站作为代理。对您的脚本执行AJAX请求,并让它进行调用。在示例PHP中,您可以使用cURL
答案 1 :(得分:1)
我认为短信服务在不同的域中。如果是这样,您无法对其进行AJAX调用,因为它违反了相同的原始策略。基本上你有两个选择:
此外,是否真的如此密码和其他秘密在HTML中可见?什么阻止人们窃取它并将其用于自己的目的?
答案 2 :(得分:1)
默认情况下,您的AJAX请求将因同源策略而失败。
http://en.wikipedia.org/wiki/Same_origin_policy
现代技术允许CORS(参见Nicholas的artilce)http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
jQuery的Ajax允许CORS。
另一种方法是获取内容并动态生成脚本元素并在head.firstchild上执行insertBefore(请参阅jQuery 1.6.4源代码行号:7833) 谷歌分析代码也做了类似的事情。你可能也想看看它。
干杯.. SREE
答案 3 :(得分:0)
对于您的示例,当从不同的域请求错误时:
XMLHttpRequest无法加载http://api.smsaction.be/push/?nichandle=??????&hash=?????&passphrase= [?????????? ??]&安培;数= ????????????&安培;含量= ???????????????。 Access-Control-Allow-Origin不允许原点http://server。
对于跨域XMLHttp请求,目标服务器必须发送Access-Control-Allow-Origin
响应头。