Этот код пытается заполнить выпадающий список в форме со значениями. Я тестировал PHP отдельно, и запрос был в порядке (не зря!). У меня есть аналогичная форма с 3 связанными выпадающими списками, и они работают безупречно. Отлаживая это в Mozilla, я замечаю, что функция успеха JSON не выполнена. Я не понимаю, почему.Простой код JSON не работает
JavaScript
$(document).ready(function()
{
$.getJSON("/scripts/033A_GetJudet.php", success = function(data)
{
var str_options = "";
for (var i=0; i < data.length; i++)
{
str_options += "<option value='" + data[i] + "'>" + data[i] + "</option>";
}
$("#selJudet").append(str_options);
// var selOption = document.getElementById("selJudet");
// selOption.selectedIndex = localStorage.getItem("selJudIndex") || 0;
// document.getElementById("selJudet").selectedIndex = selOption.selectedIndex;
$("#selJudet").change();
});
$("#selJudet").change(function()
{
var selText = document.getElementById("selText");
// selText.value = selText.defaultValue;
selText.value = "Abcgcfkjsdhfsjkdh";
// $("#selText").change();
});
});
PHP (я пропустил код подключения к базе данных)
$query = '(SELECT 1 AS sc, nume_judet FROM sa_Judet ';
$query .= 'WHERE nume_judet <> "N/A") UNION ';
$query .= '(SELECT 2 AS sc, "N/A" FROM sa_Judet) ';
$query .= 'ORDER BY sc, nume_judet';
//print $query;
$result = mysqli_query($db_conn, $query);
$judet = array();
if ($result == FALSE)
{
array_push($judet, 'QUERY_ERROR');
goto _adr1;
}
$rows = mysqli_num_rows($result);
if ($rows == 0)
{
array_push($judet, 'TBD_');
goto _adr1;
}
while ($row = mysqli_fetch_array($result))
{
array_push($judet, $row['nume_judet']);
}
_adr1:
print json_encode($judet);
mysqli_free_result($result);
mysqli_close($db_conn);
?>
Ajax вариант моего оригинального Javascript
$(document).ready(function()
{
$.ajax({
url: "/scripts/033A_GetJudet.php",
dataType: 'json',
success: function(data)
{console.log('SUCCESS: ', data);},
error: function(data)
{console.log('ERROR: ', data);}
var str_options = "";
for (var i=0; i < data.length; i++)
{
str_options += "<option value='" + data[i] + "'>" + data[i] + "</option>";
}
$("#selJudet").append(str_options);
var selOption = document.getElementById("selJudet");
selOption.selectedIndex = localStorage.getItem("selJudIndex") || 0;
document.getElementById("selJudet").selectedIndex = selOption.selectedIndex;
$("#selJudet").change();
});
$("#selJudet").change(function()
{
var selText = document.getElementById("selText");
selText.value = selText.defaultValue;
// $("#selText").change();
});
});
"goto" ... Ugh. Я предлагаю использовать более современный код. Отделите вас, если хотите, бросьте раньше, никогда не используйте goto's. Не проблема. Что скажет сетевая панель о запросе? Означает ли он статус возврата, отличный от 200? – MaxArt
JavaScript получает 304, скрипт PHP получает 200. – Mikey
Если функция успеха не выполняется, добавьте функцию ошибки и посмотрите на ее аргументы. 'getJSON' не принимает один аргумент, поэтому вам нужно будет вызвать' .fail (someFunction) 'по обещанию [согласно документации] (http://api.jquery.com/jquery.getjson/) , – Quentin