У меня есть документ о PHP, который возвращает почтовые коды через форму и возвращает массив. Если почтовый код используется более чем на одном элементе, он создает многомерный массив, иначе он хранит все только в одном. У меня есть три сценария:Обнаружение массивов с помощью ajax
- Если почтовый индекс не существует, она дает массив с 2 значениями «не существует» и вывод его на форме.
- Если почтовый индекс существует, он дает вам массив с городом и состоянием и выводит их на форму.
- Если почтовый индекс существует и используется более чем в одном элементе, он сохраняет каждый результат в массиве, а все они - в другой массив (Array => Array [0] => Array ([city] => city1 [ state] => state1) Array [1] => Array ([city] => city2 [state] => state2) ... и затем выводит всплывающее окно.
Мне удалось сделать все, кроме меня есть некоторые проблемы Вот мой код:.
PHP скрипт
include_once('../../../connect.html');
//perform lookup
$title = ($_GET['postal_code']);
$statement = $connection->prepare ("SELECT city, state FROM cities, states WHERE cities.state_id = states.state_id AND cities.postal_code = ?");
$statement->execute(array($title));
$statement->setFetchMode(PDO::FETCH_ASSOC);
$items = array();
while ($r = $statement->fetch()) {
//$arrayName = array($r = $statement->fetch());
$items[] = $r;
}
if (count($items) == '1'){
$newArray = $items[0];
echo $newArray['city'].",".$newArray['state'];
}elseif (count($items) == '0'){
echo "Doesn't exist".","."Doesn't exist";
}else{
$varios = array($items);
print_r($varios);
}
AJAX код
var ajax = getHTTPObject();
function getHTTPObject()
{
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else if (window.ActiveXObject) {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} else {
//alert("Your browser does not support XMLHTTP!");
}
return xmlhttp;
}
function updateCityState()
{
if (ajax)
{
var zipValue = document.getElementById("postal_code").value;
if(zipValue)
{
var url = "get_cities.php";
var param = "?postal_code=" + escape(zipValue);
ajax.open("GET", url + param, true);
ajax.onreadystatechange = handleAjax;
ajax.send(null);
}
}
}
function handleAjax()
{
if (ajax.readyState == 4)
{
if(ajax.responseText.length) {
if (ajax.responseText[2]) {
centerPopup();
loadPopup();
}
citystatearr = ajax.responseText.split(",");
city.value = citystatearr[0];
state.value = citystatearr[1];
}else{
}
}
}
Проблемы:
- Это вызывает функцию centerPopup и loadPopup каждый раз, независимо от результата (он должен называться только тогда, когда PHP скрипт возвращает многомерный массив.
- Я не знаю, как обнаружить через AJAX, когда скрипт отправляет обычный массив или многомерный массив.
Это в основном эти две проблемы, но решение одного, другое решение.
Любая помощь приветствуется!
Проверьте, если первый элемент (ответ [0]) является массивом или нет. Если это массив, то вы знаете, что ответ представляет собой многомерный массив. – aarosil
@aarosil Это не работает, я уже пробовал. –