我想从另一个域(我无法控制)调用外部页面(我可以控制)。下面是我用来调用的脚本,但是没有调用该页面。
-r
不知道,为什么我不能打电话。有没有更好的方法来调用页面。请指教。
答案 0 :(得分:1)
使用XMLHttpRequest
对象发出如下所示的请求
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
xmlhttp.open("GET",URL,true);
xmlhttp.send();
请求显然是GET
和' URL'是您要执行/打开的URL。第3个参数用于异步请求,可以是true或false。
为例如:id - result
创建一个div元素并附加在#result
元素中收到的结果,您可以在下一行中使用它:
document.getElementById("result").innerHTML = xmlhttp.responseText;
答案 1 :(得分:0)
contentType
虽然设置为"application/json; charset=utf-8"
,但设置为data
,例如
"{domain: '1'}"
无效JSON
。属性名称应该用双引号括起来。
创建一个javascript
普通对象,填充属性,值,然后将javascipt
普通对象传递给JSON.stringify()
,将data
设置为有效JSON
结果。
contentType (默认:
'application/x-www-form-urlencoded
; = UTF-8'`)输入:
Boolean
或String
将数据发送到服务器时,请使用此内容类型。默认是 "应用程序/ X WWW的窗体-urlencoded; charset = UTF-8",这很好 大多数情况下。如果您明确地将内容类型传递给
$.ajax()
,那么 它总是被发送到服务器(即使没有数据发送)。作为 jQuery 1.6你可以传递false来告诉jQuery不要设置任何内容 类型标题。注意:W3C XMLHttpRequest规范规定了这一点 charset总是UTF-8;指定另一个字符集不会强制 浏览器更改编码。注意:对于跨域请求, 将内容类型设置为除以外的任何内容application/x-www-form-urlencoded
,multipart/form-data
或text/plain
将触发浏览器发送预检OPTIONS请求 服务器
$(function () {
var val = window.location.hostname;
alert(val);
var data = JSON.stringify({"domain": val});
$.ajax({
type: "GET",
async: false,
crossDomain: true,
dataType: 'json',
contentType: "application/json; charset=utf-8",
url: "http://somedomain.com/validate.aspx/validfunction",
data: data,
success: function (data) {
alert(data.d);
},
error: function (jqXHR, textStatus, errorThrown) {
alert('error');
console.log(jqXHR, textStatus, errorThrown);
}
});
});
您也可以尝试使用$.getJSON()
{和} {{}}}附加到网址。
<强> JSONP 强>
如果URL包含字符串&#34; callback =?&#34; (或类似的,由...定义) 在服务器端API),请求被视为JSONP。见 有关详细信息,请参阅
"?callback=?"
中jsonp
数据类型的讨论。
$.ajax()
答案 2 :(得分:-1)
每当我们从ajax方法请求web方法时,它应该是'POST'类型,而对于跨域,数据类型是'JSONP'。 Web方法应以JSON格式返回数据。
$.ajax({
type: "POST",
async: false,
crossDomain: true,
dataType: 'jsonp',
contentType: "application/json; charset=utf-8",
url: "http://somedomain.com/validate.aspx/validfunction",
data: "{domain: '" + val + "'}",
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data.d);
},
error: function (jqXHR, textStatus, errorThrown) {
alert('error');
console.log(jqXHR, textStatus, errorThrown);
}
});