Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AJAX从PHP文件获取数据_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 使用AJAX从PHP文件获取数据

Javascript 使用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

我试图使用AJAX从PHP文件中获取一些数据,但只得到一个错误:

未捕获的TypeError:无法读取null的属性“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);
?>
这里出了什么问题?

我现在无法评论:(并写下我的建议作为回答。似乎您在
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)