[英]Get data from PHP file using AJAX
我正在尝试使用AJAX从PHP文件中获取一些数据,但仅收到一个错误:
未捕获的TypeError:无法读取null的属性“ protocole”
protocoleGenerator.php
<?php
$array = array(
'protocole' => '1029384756',
);
echo json_encode($array);
?>
的script.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()
返回pure null
(如果禁用了php通知)。成功函数接收null
,并且无法从此对象获取属性。这只是我的主观建议,可能是错误的。
PS:您可以以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
从西里尔字符开始。
我在本地主机上运行您的代码,一切正常,请检查系统中的以下代码,如果仍然出现任何错误,请发布整个代码,以便我可以检入系统。
的index.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Json</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script type="text/javascript">
function getDemoProtocol() {
$.ajax({
url: 'protocoleGenerator.php',
data: "",
dataType: 'json', //data format
success: function (data) {
var protocole = data['protocole'];
console.log(protocole);
alert(protocole);
console.log("Prot: " + protocole);
}
});
}
getDemoProtocol(); // Javascript method
// Jquery Method
$(function (){
$.ajax({
url: 'protocoleGenerator.php',
data: "",
dataType: 'json', //data format
success: function (data) {
console.log(data);
var protocole = data.protocole;
console.log("Prot: " + protocole);
}
});
});
</script>
</head>
<body>
</body>
</html>
protocoleGenerator.php
<?php
header('Content-Type: application/json');
$array = array(
'protocole' => '1029384756',
);
echo json_encode($array);
?>
这是因为您收到错误404:找不到 。 检查控制台(选中“日志XHR请求”复选框)。
解决方案是更改此:
url: 'protocoleGenerator.php',
对此:
url: './protocoleGenerator.php',
工作示例:
http://neolink.dyndns.org:81/stackoverflow/1.php
PS。 jQuery即使在响应为404时也运行成功函数,这很奇怪。
PS2。如果它不起作用(应该!),请提供完整路径(例如http://blabla.com/1/3/45345/protocoleGenerator.php
,因为这可能取决于服务器)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.