2013-10-11 45 views
1

我想从使用ajax的PHP文件中查找两个测量值。 PHP文件获取值并将它们存储为两个变量。这部分工作正常。如何将AJAX查询中的两个值返回给javascript?

我不知道如何将这两个变量带回到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元素的正确方法是什么?

回答

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。有(例如使用json_encode()getdata.php输出序列化JSON像

{"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临时存储信息。

+0

这很好,谢谢。我没有听说过回调。 – Alligator

相关问题