2013-10-11 5 views
1

Я пытаюсь найти два измеренных значения из файла PHP с помощью ajax. Файл 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. Есть 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 для временного хранения информации.

+0

Это сработало отлично, спасибо. Я не слышал о обратном вызове. – Alligator

Смежные вопросы