我尝试使用 AJAX 从 PHP 文件获取一些数据,但只收到错误:
Uncaught TypeError: Cannot read property 'protocole' of null
协议(protocol)生成器.php
<?php
$array = array(
'protocole' => '1029384756',
);
echo json_encode($array);
?>
脚本.js
function getDemoProtocol() {
$.ajax({
url: 'protocoleGenerator.php',
data: "",
dataType: 'json', //data format
success: function (data) {
var protocole = data['protocole'];
console.log("Prot: " + protocole);
}
});
}
这里出了什么问题?
最佳答案
我现在无法发表评论:(并写下我的建议作为答案。您似乎在 protocoleGenerator.php
中输入错误。可能结束行看起来像 echo json_encode( $aray);
,在这种情况下 json_encode()
返回纯 null
(如果您禁用了 php 通知)。成功函数接收 null
并且无法从该对象获取属性。这只是我的主观建议。可能是错误的。
P.S:您可以获取值/调用函数作为 Object.my_fun() 或 Object['my_func']() - 对于这种特殊情况,您如何访问变量并不重要。例如:
var o = {};
o.test = 'my test value';
o.fff = function() {return 'fff called.';};
console.log('dot-style:' + o.test);
console.log('arr-style:' + o['test']);
console.log('dot-style:' + o.fff());
console.log('arr-style:' + o['fff']());
好吧,我有一个减号。如果假设,该主题启动器向我们展示了他的代码的硬拷贝粘贴,那么这里没有问题。我的建议基于错误消息 - “成功函数”从服务器获取带有文本“null”的 HTTP/200 答案。对于空或无效的 json 响应,jquery-ajax 调用“错误处理程序”。我确信它不是由 json_encode()
行为引起的 - 我上面的例子证明了这一点。
另一个建议是特定的服务器配置、重写、重定向或其他东西。但我已经排除了这个建议。
噢...
<?php
$array = array(1,2);
$аrray = array(3,4);
var_dump($array);
var_dump($аrray);
结果看起来像这样:
array(2) {
[0] =>
int(1)
[1] =>
int(2)
}
array(2) {
[0] =>
int(3)
[1] =>
int(4)
}
你看到区别了吗?我不知道,但第二个 $array
从西里尔字符开始。
关于javascript - 使用 AJAX 从 PHP 文件获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35203601/