PHP случайно ошибки неопределенного смещения

У меня проблема с неопределенными ошибками смещения. Я прочитал много связанных постов, и я знаю, что это потому, что ключ массива возвращает неопределенный. Однако структура моего кода "должна" гарантировать, что ключи ссылочного массива определены.

Я заполняю ввод HTML, используя следующее:

echo "<option>" . $row['year'] . "|" . $model . "|" . $row['date'] . "|" . $row['status'] . "</option>"; 

Столбцы даты года и состояния этого выбора имеют одинаковый размер, но модель имеет переменную длину, поэтому я использовал:

$model = str_pad($row['model'],10,".",STR_PAD_BOTH);
$model = str_replace(".", "&nbsp;", $model);

Опция вывода выглядит так: 2004| R32 Golf |06.05.2014| Открыть. "." padding/replace сохраняет пробел между двумя словами в последующем коде.

Событие 'onchange' этого ввода вызывает javascript/ajax для другого php-файла, передавая значение опции. Этот файл, вызываемый ajax, делает следующее:

$Job=($_GET['job']);
$Job = htmlentities($Job);
$jobInfo = explode ( "|",  $Job );

Вывод из этого выглядит следующим образом: 0->2004 1-> & nbsp; R32 Golf/ & nbsp; 2->06.05.2014 3-> Открыто. Итак, наконец, я заменяю & NBSP; снова с пустыми строками.

$model=str_replace("&nbsp;", "", $jobInfo[1]);

Ключи используются для запроса MySQL и заполнения полей формы.

Таким образом, проблема, когда я выбираю из своего списка, иногда (70%) он возвращается правильно и заполняет поля, а иногда (30%) он возвращает неопределенное смещение 1, неопределенное смещение 2 и неопределенное смещение 3. Кажется, что это совершенно случайно, но разделитель '|' и implode всегда должен возвращать массив с ключами 0,1,2 и 3.

Эта проблема кажется очень специфичной, но я новичок здесь и хотел предоставить как можно больше информации в надежде найти решение. Было трудно воспроизвести эту проблему без списка выбора и вызова ajax.

JS Ajax: (небрежно)

function getJob(jobInfo)
{ 
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4)
{
if (xmlhttp.status == 200)
     {
    results = xmlhttp.responseText.split("~");
        document.getElementById('address').value = results[0];
//more results[]

 } else {
   alert("There was a problem while using XMLHTTP:\n" + xmlhttp.statusText);
}}}
xmlhttp.open("GET","getJob.php?job="+jobInfo,true);
    xmlhttp.send();   
}

0 ответов

Другие вопросы по тегам