Javascript 使用AJAX从PHP文件获取数据
我试图使用AJAX从PHP文件中获取一些数据,但只得到一个错误: 未捕获的TypeError:无法读取null的属性“protocole” protocoleGenerator.phpJavascript 使用AJAX从PHP文件获取数据,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我试图使用AJAX从PHP文件中获取一些数据,但只得到一个错误: 未捕获的TypeError:无法读取null的属性“protocole” protocoleGenerator.php <?php $array = array( 'protocole' => '1029384756', ); echo json_encode($array); ?> <?php header('Content-Type: applicat
<?php
$array = array(
'protocole' => '1029384756',
);
echo json_encode($array);
?>
<?php
header('Content-Type: application/json');
$array = array(
'protocole' => '1029384756',
);
echo json_encode($array);
?>
这里出了什么问题?我现在无法评论:(并写下我的建议作为回答。似乎您在protocoleGenerator.php
中键入了错误。可能是结尾行看起来像echo json_encode($aray);
,在这种情况下json_encode()
返回纯null
(如果您有禁用php的通知)。成功函数接收到null
,无法从此对象获取属性。这只是我的主观建议。可能是错误的
注意:您可以将value/call函数作为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']());
好的,我有一个负号。如果假设,主题初学者向我们展示了他的代码的硬拷贝粘贴,这里没有问题。我的建议基于错误消息——“success function”从服务器获取HTTP/200答案,文本为“null”。如果json响应为空或无效,jquery ajax调用“错误处理程序”.我确信这不会是由json\u encode()
行为引起的-我上面的例子证明了这一点
另一个建议是特定的服务器配置、重写、重定向或其他。但我排除了这个建议
哦
你看到区别了吗?我没有,但是第二个$array
是从西里尔字母开始的。我现在不能评论:(并写下我的建议作为答案。似乎你在protocoleGenerator.php
中输入了错误。可能是结尾行看起来像echo json_encode($aray)
,在这种情况下是json_encode()
返回纯null
(如果您有禁用php通知)。成功函数接收null
,无法从此对象获取属性。这只是我的主观建议。可能是错误的
注意:您可以将value/call函数作为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']());
好的,我有一个负号。如果假设,主题初学者向我们展示了他的代码的硬拷贝粘贴,这里没有问题。我的建议基于错误消息——“success function”从服务器获取HTTP/200答案,文本为“null”。如果json响应为空或无效,jquery ajax调用“错误处理程序”.我确信这不会是由json\u encode()
行为引起的-我上面的例子证明了这一点
另一个建议是特定的服务器配置、重写、重定向或其他。但我排除了这个建议
哦
你看到区别了吗?我没有,但是第二个
$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>
Json
函数getDemoProtocol(){
$.ajax({
url:'protocoleGenerator.php',
数据:“,
数据类型:“json”,//数据格式
成功:功能(数据){
var protocole=数据['protocole'];
控制台日志(protocole);
警报(protocole);
控制台日志(“Prot:+protocole”);
}
});
}
getDemoProtocol();//Javascript方法
//Jquery方法
$(函数(){
$.ajax({
url:'protocoleGenerator.php',
数据:“,
数据类型:“json”,//数据格式
成功:功能(数据){
控制台日志(数据);
var protocole=data.protocole;
控制台日志(“Prot:+protocole”);
}
});
});
protocoleGenerator.php
<?php
$array = array(
'protocole' => '1029384756',
);
echo json_encode($array);
?>
<?php
header('Content-Type: application/json');
$array = array(
'protocole' => '1029384756',
);
echo json_encode($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>
Json
函数getDemoProtocol(){
$.ajax({
url:'protocoleGenerator.php',
数据:“,
数据类型:“json”,//数据格式
成功:功能(数据){
var protocole=数据['protocole'];
控制台日志(protocole);
警报(protocole);
控制台日志(“Prot:+protocole”);
}
});
}
getDemoProtocol();//Javascript方法
//Jquery方法
$(函数(){
$.ajax({
url:'protocoleGenerator.php',
数据:“,
数据类型:“json”,//数据格式
成功:功能(数据){
控制台日志(数据);
var protocole=data.protocole;
控制台日志(“Prot:+protocole”);
}
});
});
protocoleGenerator.php
<?php
$array = array(
'protocole' => '1029384756',
);
echo json_encode($array);
?>
<?php
header('Content-Type: application/json');
$array = array(
'protocole' => '1029384756',
);
echo json_encode($array);
?>
这是因为您遇到了错误404:not found。请检查控制台(勾选log XHR requests复选框) 解决方案是,改变这一点:
url: 'protocoleGenerator.php',
为此:
url: './protocoleGenerator.php',
工作示例:
PS。jQuery即使在响应为404时也运行成功函数,这很奇怪。
PS 2.如果它不起作用(应该!),请给出完整路径(如
http://blabla.com/1/3/45345/protocoleGenerator.php
,因为这可能是服务器可靠的)这是因为您遇到了错误404:找不到。请检查控制台(勾选日志XHR请求复选框)
解决方案是,改变这一点:
url: 'protocoleGenerator.php',
为此:
url: './protocoleGenerator.php',
工作示例:
PS。jQuery即使在响应为404时也运行成功函数,这很奇怪。
PS 2.如果它不起作用(应该!),请给出完整的路径(比如h)