您好我有一个通过ajax连接到php脚本的JavaScript代码。这个php脚本返回一个数组。在ajax调用的success函数中,我使用返回的数组向用户显示信息。这一切在我尝试过的所有浏览器中都能正常工作,除了Internet Explorer。我收到以下错误:
Unable to get property '0' of undefined or null reference
'0'是数组中第一个元素的索引。这是代码:
JS
$.ajax({
type: "POST",
url: "/add.php",
data: 'id=' + itemid,
dataType: "json",
success: function (data) {
document.getElementById("name").innerHTML = data[0];
document.getElementById("desc").innerHTML = data[1];
document.getElementById("price").innerHTML = data[2];
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
PHP
$output = array();
$output[0] = $itemname;
$output[1] = $itemdescription;
$output[2] = $itemprice;
echo json_encode($output);
exit();
我在成功函数中尝试了console.log(data)
,在Internet Explorer中它返回null,而其他浏览器则返回数组。有人知道这里有什么问题吗?
编辑:IE中控制台上的错误代码是SCRIPT5007。搜索到这个,这意味着:
You attempted to invoke the Object.prototype.toString or Object.prototype.valueOf method on an object of a type other than Object. The object of this type of invocation must be of type Object.
答案 0 :(得分:1)
尝试:
$output = array();
$output[] = $itemname;
$output[] = $itemdescription;
$output[] = $itemprice;
echo json_encode($output);
exit();
请注意,$output[]=xxx
表示:将xxx附加到$output
,其中$output[1]=xxx
表示,将xxx放在$output
的索引1处。
请注意,您也可以这样做:
$output = array($itemname, $itemdescription, $itemprice);
编辑评论和倍数OP编辑:
尝试打印数据以查看正在进行的操作:
success: function (data) {
console.log(data);
document.getElementById("name").innerHTML = data[0];
document.getElementById("desc").innerHTML = data[1];
document.getElementById("price").innerHTML = data[2];
},
您将在控制台中看到data
包含的内容(使用F12)
答案 1 :(得分:0)
不太清楚为什么,试着把它变成一个kv对象?
$output = array(
'item' => array (
$itemname, $itemdescription, $itemprice
)
);
echo json_encode($output);
exit();