1

我正在尝试使用 ajax 从 PHP 文件中查找两个测量值。PHP 文件获取值并将它们存储为两个变量。这部分工作正常。

我不知道如何将这两个变量带回 javascript。这是我正在使用的 javascript,并且 .js 文件位于同一目录中。

    <script src="ajaxgetdata.js"></script>

    <script>
    MakeRequest();
    </script>

这是 ajaxgetdata.js 文件的相关部分:

function MakeRequest()
{
  var xmlHttp = getXMLHttp();

  xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      HandleResponse(xmlHttp.responseText);
    }
  }

  xmlHttp.open("GET", "getdata.php", true); 
  xmlHttp.send(null);
}

function HandleResponse(response)
{
  document.getElementById('ResponseDiv').innerHTML = response;
}

我不希望 div 元素将值放入,因为我需要它们最终进入 javascript 中的单独变量,并且我需要返回两个值。将两个值返回到变量而不是将某些内容返回到 div 元素的正确方法是什么?

4

1 回答 1

2

通常你只想传递一个回调:

function makeRequest(callback) {
    var xmlHttp = getXMLHttp();
    xmlHttp.onreadystatechange = function () {
        if(xmlHttp.readyState === 4) {
            callback(xmlHttp.responseText);
        }
    };
}

// ...

makeRequest(function (data) {
    // work with your result!
});

至于返回几条信息,常用的方法是 JSON。getdata.php输出序列化 JSON(例如使用json_encode ()),如

{"theFirstVariable":"Hello","theSecondVariable":"World!"}

然后拿起它

makeRequest(function (data) {
    var parsedData = JSON.parse(data);

    var firstVariable = parsedData.theFirstVariable,
        secondVariable = parsedData.theSecondVariable;

    // rock'n'roll
    console.log(firstVariable + " " + secondVariable); // "Hello World!"
});

并且您没有将其存储在 DOM 中是正确的。这是一个糟糕的解决方法,不要滥用 DOM 来临时存储信息。

于 2013-10-11T23:28:17.453 回答