完成上一个请求后,如何重新发送Ajax请求

时间:2017-10-18 06:07:14

标签: javascript php ajax

我正在尝试对网页执行简单的Ajax请求(由按钮上的onclick事件触发):

    // 1. crea un oggetto di tipo XMLHttpRequest
var myRequest = new XMLHttpRequest();
// 2. usa il metodo open per richiedere una risorsa sul sito remoto
myRequest.open('GET', 'http://www.classiperlo.altervista.org/File%20comuni/ora_ajax.php?y=' + Math.random(),true);
// 3. ogni volta che cambia lo stato dell'oggetto esegue una funzione
myRequest.onreadystatechange = function () { 
    // 4. readyState === 4 indica che il server ha risposto
    if (myRequest.readyState === 4) {
        // 5. inserisce il contenuto della risposta in un DIV
        document.getElementById('ajax-content').innerHTML = myRequest.responseText;
    }
};

function sendTheAJAX() {
    myRequest.send();
}

我不明白为什么,当我再次点击时,我会从服务器收到相同的信息。我的意思是,我的页面ora_ajax.php只是在php中显示当前时间,当我发送新请求时,这些信息不会刷新。

我的错误在哪里? 非常感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

尝试将“请求创建和打开”代码放在另一个函数中,并在要发送另一个请求时调用该函数。

function sendRequest(){
  var myRequest = new XMLHttpRequest();
  ...
return myRequest;
}

function sendTheAJAX() { sendRequest(); }

答案 1 :(得分:0)

感谢您的帮助。解决了简单地将所有代码放在由onclick事件触发的函数内:

function sendTheAJAX() {
// 1. crea un oggetto di tipo XMLHttpRequest
var myRequest = new XMLHttpRequest();
// 2. usa il metodo open per richiedere una risorsa sul sito remoto
myRequest.open('GET', 'http://www.classiperlo.altervista.org/File%20comuni/ora_ajax.php?y=' + Math.random(),true);
// 3. ogni volta che cambia lo stato dell'oggetto esegue una funzione
myRequest.onreadystatechange = function () { 
    // 4. readyState === 4 indica che il server ha risposto
    if (myRequest.readyState === 4) {
        // 5. inserisce il contenuto della risposta in un DIV
        document.getElementById('ajax-content').innerHTML = myRequest.responseText;
    }
};

    myRequest.send();
}

通过这种方式,每次点击按钮都会创建一个新对象myRequest。

答案 2 :(得分:0)

将所有XHR代码放在$count = $product->discounts()->valid()->get(); $discounts = Discount::where('product_id', '=', $product->id)->get(); $mytime = Carbon::now(); sendTheAJAX上方,然后调用整个内容,否则.send()永远不会更改。

阅读完评论后,您可以删除该部分。似乎你不需要它。

请注意,如果您要使用它Math.random(),则返回0到0.99999999之间的数字,而不是1.

Math.random()