我遇到了未定义的偏移错误问题。我已阅读了许多相关帖子,我知道这是因为数组键未返回undefined。但是,我的代码结构'应该'保证引用的数组键被定义。
我正在使用以下内容填写html选择输入:
echo "<option>" . $row['year'] . "|" . $model . "|" . $row['date'] . "|" . $row['status'] . "</option>";
此选择的年份日期和状态列的大小都相同,但模型的长度可变,因此我使用了:
$model = str_pad($row['model'],10,".",STR_PAD_BOTH);
$model = str_replace(".", " ", $model);
选项输出如下:2004 | R32高尔夫| 06/05/2014 |打开。 “。” padding / replace在后面的代码中保留两个单词之间的空格。
此输入的'onchange'事件将javascript / ajax调用到另一个传递选项值的php文件。 由ajax调用的此文件执行以下操作:
$Job=($_GET['job']);
$Job = htmlentities($Job);
$jobInfo = explode ( "|", $Job );
此输出如下:0-&gt; 2004 1-&gt;&amp; nbsp; R32 Golf /&amp; nbsp; 2-> 06/05/2014 3-&gt;打开。 最后,我更换了&amp; nbsp;再次使用空字符串。
$model=str_replace(" ", "", $jobInfo[1]);
密钥用于查询MySQL和填写表单字段。
所以问题是,当我从列表中选择时,有时(70%)它会正确返回并填充字段,有时(30%)它会返回未定义的偏移量1,未定义的偏移量2和未定义的偏移量3。 它似乎是完全随机的,但是分隔符'|'和implode应该总是返回一个带有键0,1,2和3的数组。
这个问题似乎非常具体,但我是新来的,希望尽可能多地提供信息,以期找到解决方案。如果没有select list和ajax调用,很难重现这个问题。
JS ajax :( Sloppy)
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();
}