如何使用纯JavaScript调用外部页面

时间:2017-01-03 03:36:21

标签: javascript

我想从另一个域(我无法控制)调用外部页面(我可以控制)。下面是我用来调用的脚本,但是没有调用该页面。

-r

不知道,为什么我不能打电话。有没有更好的方法来调用页面。请指教。

3 个答案:

答案 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结果。

请参阅$.ajax([settings])

  

contentType (默认:'application/x-www-form-urlencoded; = UTF-8'`)

     

输入:BooleanString

     

将数据发送到服务器时,请使用此内容类型。默认是   "应用程序/ X WWW的窗体-urlencoded; charset = UTF-8",这很好   大多数情况下。如果您明确地将内容类型传递给$.ajax(),那么   它总是被发送到服务器(即使没有数据发送)。作为   jQuery 1.6你可以传递false来告诉jQuery不要设置任何内容   类型标题。注意:W3C XMLHttpRequest规范规定了这一点   charset总是UTF-8;指定另一个字符集不会强制   浏览器更改编码。注意:对于跨域请求,   将内容类型设置为除以外的任何内容   application/x-www-form-urlencodedmultipart/form-datatext/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);

    }
});