使用 AJAX 从 PHP 文件中获取数据
Get data from PHP file using AJAX
我正在尝试使用 AJAX 从 PHP 文件中获取一些数据,但我只收到一个错误:
未捕获的类型错误: 无法读取 null 的属性"协议">
协议生成器.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
,无法从此对象获取属性。这只是我的主观建议。这可能是错的。
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
从西里尔字符开始。
我在本地主机中运行您的代码,它工作正常,请检查您系统中的以下代码,如果您仍然遇到任何错误,请发布您的整个代码,以便我可以检查我的系统。
索引.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>
协议生成器.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
附言。这很奇怪,即使响应是 404,jQuery 也运行成功函数。
附言 2.如果它不起作用(它应该!(,请提供完整路径(如http://blabla.com/1/3/45345/protocoleGenerator.php
,因为这可能是服务器可靠的(
- Ajax-如何获取数据
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 从数据库中获取数据并插入JavaScript变量
- 从单击的行上的列中获取数据
- Solr查询以按日期月份获取数据&年
- React路由器服务器端渲染和ajax获取数据
- 使用JavaScript在IE9中获取数据列表选项
- 从json子数组获取数据
- 使用angularjs中的rest调用通过id获取数据
- 正在从ruby应用程序中的数据库中获取数据
- 如何从servlet获取数据到ajax成功
- 从选择下拉菜单中获取数据
- 异步获取数据使用JavaScript同步获取数据
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 如何在Angular.js中循环动态添加Fields并获取数据并将其发送到服务器
- JavaScript-获取数据属性的值返回未定义的值
- 如何从文本区域获取数据并使用javascript进行解密
- 在put方法之前从作用域获取数据
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么