使用javascript是否可以执行get请求?

使用javascript是否可以执行get请求?,javascript,php,frontend,backend,Javascript,Php,Frontend,Backend,我想知道是否可以使用javascript发出GET请求,这样它就可以在不刷新页面的情况下更新文本 如果这是可能的,我如何使用javascript发出get请求&从json获取结果/解码它 我试着从过去的一个问题: function updateButton(){ var xmlHttp = null; xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", "http://xxxx.com/getSpecialSale.

我想知道是否可以使用javascript发出GET请求,这样它就可以在不刷新页面的情况下更新文本

如果这是可能的,我如何使用javascript发出get请求&从json获取结果/解码它

我试着从过去的一个问题:

function updateButton(){

    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", "http://xxxx.com/getSpecialSale.php", false);
    xmlHttp.send(null);
    document.getElementById("dicebutton").innerHTML=xmlHttp.responseText;
}

而且,它完全停止了主线程,使网站没有响应。怎么了?

当前,您将async参数设置为false,因此请求将发送到服务器,浏览器将等待响应。要发出异步请求,只需将true作为第三个参数传递给
open

xmlHttp.open("GET", "http://xxxx.com/getSpecialSale.php", true);
除此之外,您还必须注册一个回调,它等待响应(可能还要处理错误…)

除此之外,mozilla文档中还有一条注释

注意:从Gecko30.0(Firefox30.0/Thunderbird 30.0)开始/ SeaMonkey 2.27),主线程上的同步请求 由于对用户体验的负面影响,已弃用


当前,您将async参数设置为false,因此请求将发送到服务器,浏览器将等待响应。要发出异步请求,只需将true作为第三个参数传递给
open

xmlHttp.open("GET", "http://xxxx.com/getSpecialSale.php", true);
除此之外,您还必须注册一个回调,它等待响应(可能还要处理错误…)

除此之外,mozilla文档中还有一条注释

注意:从Gecko30.0(Firefox30.0/Thunderbird 30.0)开始/ SeaMonkey 2.27),主线程上的同步请求 由于对用户体验的负面影响,已弃用


如果要使用async,则需要对代码进行一些修改,即响应完成后发生的事情需要在回调函数中,如下所示:

function updateButton(){

    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", "http://xxxx.com/getSpecialSale.php", true);
    xmlHttp.onload = function () {
      document.getElementById("dicebutton").innerHTML=xmlHttp.responseText;
    };
    xmlHttp.send(null);

}

如果要使用async,则需要对代码进行一些修改,即响应完成后发生的事情需要在回调函数中,如下所示:

function updateButton(){

    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", "http://xxxx.com/getSpecialSale.php", true);
    xmlHttp.onload = function () {
      document.getElementById("dicebutton").innerHTML=xmlHttp.responseText;
    };
    xmlHttp.send(null);

}
或者jQuery

$("#btnUpdate").click(function(){
    $.get("http://xxxx.com/getSpecialSale.php", function(data, status){
        $("#dicebutton").html(data);
    });
});
或者jQuery

$("#btnUpdate").click(function(){
    $.get("http://xxxx.com/getSpecialSale.php", function(data, status){
        $("#dicebutton").html(data);
    });
});

不要将
false
传递到Async设置为false(第三个参数为
.open
),因此它将锁定UI,直到完成为止。您的代码需要修改才能使用async true。是的,但是为什么需要aysnc来获取数据呢?我担心的不是性能,即使脚本应该在主线程上运行,它也不能工作。不管是
GET
还是
POST
;在等待服务器回复时,需要使用async以避免JS突然停止。不过,你能澄清问题是什么吗?网站是否在短时间内没有响应?还是完全崩溃?AJAX请求应该是异步的。先把它修好。之后有什么问题吗?不要传递
false
to Async设置为false(第三个参数为
.open
),因此它将锁定UI直到完成。您的代码需要修改才能使用async true。是的,但是为什么需要aysnc来获取数据呢?我担心的不是性能,即使脚本应该在主线程上运行,它也不能工作。不管是
GET
还是
POST
;在等待服务器回复时,需要使用async以避免JS突然停止。不过,你能澄清问题是什么吗?网站是否在短时间内没有响应?还是完全崩溃?AJAX请求应该是异步的。先把它修好。之后有什么问题吗?他还需要将使用
responseText
的代码移动到回调。他还需要将使用
responseText
的代码移动到回调。