两个AJAX GET请求调用不在同一页面上工作

时间:2017-12-28 06:15:33

标签: javascript php html ajax

我有一个页面index.php,我将所有其他页面加载到此页面中包含的div中。

  • results.php运行搜索并显示数据。
  • profile_v.php读取特定文本文件,解析数据并显示它。

这两个页​​面都需要GET请求才能将数据提供给它们,并且它们都有自己的AJAX调用来进行相对操作。

所有AJAX调用函数都在index.php中。当我在profile_v.php中调用index.php AJAX时,result.php AJAX调用不再有效。

profile_v.php AJAX调用和解析器:

function parser2(code) {
    var cpdata = code.split('\n');
    var i = 0;
    var res;
    var len = cpdata.length;
    while (i < len) {
        res = cpdata[i].split(',');
        //alert(res[0]+" -> "+res[1]);
        document.getElementById(res[0]).innerHTML = res[1];
        i++;
    }
}

function prof_load() {
    //alert('hi');
    var str = '<?php echo $_GET['
    user '];?>';
    //alert(str);
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            //document.getElementById('junk').innerHTML = this.responseText;
            parser2(this.responseText);
        }
    };
    xhttp.open("POST", "action_page.php", true);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send("profld1=" + str);
}

results.php AJAX致电:

function search() {
    var query = document.getElementById('search').value;
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("frame").innerHTML = this.responseText;
        }
    };
    xhttp.open("GET", "result.php?query=" + query, true);
    xhttp.send();
}

function prof_click(str) {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("frame").innerHTML = this.responseText;
        }
    };
    xhttp.open("GET", "profile_v.php?user=" + str, true);
    xhttp.send();
}

预期流程

  • 浏览用户在搜索字段中输入文字并执行search()
  • 搜索显示相对于搜索关键字的用户名。
  • 浏览用户点击用户名(div) - &gt; prof_click()执行。
  • prof-click()profile_v.php发送GET请求,其中prof_load()在正在运行时运行。

问题:

  • 当我单独加载这些页面而不是通过AJAX调用时,它可以正常工作。
  • 当我将所有AJAX调用放入index.php时,搜索按钮本身停止工作......(search()不执行)
  • 来自prof_click()的GET请求转到profile_V.php也可以在其他两个功能未添加到index.php时使用。
  • 所有JS函数都在index.php中,它有div来加载所有页面。 javascript调用在各自的页面中。

  • 我遇到的问题是输入搜索关键字的时间。 GET请求拉取DB中的所有匹配条目。匹配的用户名显示在不同的div中。单击任何一个时,将调用prof_click(str)。当我在$_GET中回显profile_v.php时,它会显示传递的字符串,该字符串是搜索关键字(搜索用户)的配置文件。但是当调用body onload中调用的prof_load()时,在index.php的div内部没有JS函数正在执行。

  • 我尝试在alert("string")内加prof_load()而没有其他内容,并尝试再次运行代码......这次搜索工作正常。但是,加载profile_v.php时,警报框未显示。

我有一种感觉,GET请求在某处变得不匹配。有人可以告诉我这里我缺少什么。非常感谢提前。

1 个答案:

答案 0 :(得分:0)

我试图通过AJAX调用一个页面...其中有另一个AJAX调用。

  • index.php调用profile_v.php作为页面布局。
  • profile_v.php调用action_page.php以获取要传递给profile_v.php的数据。

通话顺序不正确。我只需重新安排一些代码并将呼叫放在正确的位置。

感谢所有人的支持......干杯!!