Php 未捕获类型错误:无法读取属性';数据';未定义的

Php 未捕获类型错误:无法读取属性';数据';未定义的,php,jquery,ajax,Php,Jquery,Ajax,我需要这段代码的帮助,我发现了一些类似的问题: 但仍然不起作用,我正在使用jquery(.ajax)向服务器(php)发送和接收数据,当我在.ajax函数中使用localhost at url时,它工作正常并接收我需要的数据,但当我更改服务器ip的url时,它显示:“Uncaught TypeError:无法读取未定义的属性“some value” Jquery代码: $(document).on("ready",inicio); function inicio(){ /*Ch

我需要这段代码的帮助,我发现了一些类似的问题:

但仍然不起作用,我正在使用jquery(.ajax)向服务器(php)发送和接收数据,当我在.ajax函数中使用localhost at url时,它工作正常并接收我需要的数据,但当我更改服务器ip的url时,它显示:“Uncaught TypeError:无法读取未定义的属性“some value”

Jquery代码:

$(document).on("ready",inicio);

function inicio(){



  /*Change pages events*/
  var buttonscan;
  buttonscan = $('#button_scan');
  buttonscan.on("click",solicitardatos);



}

function solicitardatos(){
           var idscan = "001";
            $.ajax({
                type: 'post',
                //with localhost works fine, this is the ip of my cpu when testing from
                //other device 192.168.0.101
                url: "http://192.168.0.101/server/info.php?jsoncallback=?",
                data: {datos:idscan},
                cache: false,
                success: function(data) {


                $('#button_scan').hide();
                $('#page1').hide();
                $('#page2').show(); 


                $('#pl').html(data[0].pl);                 
                $('#name').html(data[0].name);


            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log("Error... " + textStatus + "        " + errorThrown);
                alert("Error... " + textStatus + "        " + errorThrown);
            },
            dataType: 'json'
        });
}

这是PHP服务器文件(info.PHP)


因此,当我使用url设置(localhost)时,它工作,当我更改为服务器ip(192.168.0.101)时,它停止工作并显示: “未捕获的TypeError:无法读取未定义的属性'pl'”

,我知道它正在工作,因为当我在浏览器中复制192.168.0.101/server/info.php时,它没有显示任何错误

谢谢


现在我使用了一个外部服务器,它位于云端,如果我在info.php上使用一个常量$id=“001”,它就会工作,但是当我删除该常量并将$id=$\u POST['datos']放入时,它又是空的,所以我认为在发送数据时出现了一些问题,我认为有两件事需要解决:

PHP:


最后我发现了问题的一部分,当它发送数据时,它是以Get的形式发送数据的,所以我修改了.ajax函数和info.php

Jquery代码

function solicitardatos(){
  $.ajax({
                type: 'get',                
                url: "http://192.168.0.101/server/info.php?jsoncallback=?",
                data: {datos:idscan},
                dataType: "json",
                cache: false,
                   ...

             });
}
Php



我不知道为什么它会以get的形式发送数据,但经过这些更改,它现在正在运行,谢谢你的URL结构看起来很奇怪。为什么是两个问号?在两台不同的服务器机器上运行的php代码版本之间是否存在差异,或者在数据方面是否存在差异?我在这里可能是在吹毛求疵,但这似乎不寻常,至少对我来说是如此-您是否尝试删除额外的
?成功回调中的
数据
变量中有什么内容?这可能是一个显式错误,而不是从IPAlso拒绝MySQL权限之类的数据。请使用控制台(F12)中的“网络”选项卡或使用类似Fiddler的软件检查Ajax调用的HTTP错误代码:最后,尝试在新的浏览器选项卡中手动调用URL。有一些浏览器插件允许发送POST变量以测试您的网页。当我使用contentType:“application/json”时,它会提示相同的问题,并且没有数据
< header('Content-Type: text/javascript; charset=UTF-8');
> header('Content-Type: application/json; charset=UTF-8');
$.ajax({
    type: 'post',
    url: "http://192.168.0.101/server/info.php?jsoncallback=?",
    data: {datos:idscan},
    + contentType : "application/json"
    + dataType: "json"
    cache: false,
function solicitardatos(){
  $.ajax({
                type: 'get',                
                url: "http://192.168.0.101/server/info.php?jsoncallback=?",
                data: {datos:idscan},
                dataType: "json",
                cache: false,
                   ...

             });
}
 <?php 
    header('Content-Type: text/javascript; charset=UTF-8');

    error_reporting(E_ALL ^ E_NOTICE);
    require("conexion.php");


if (isset ($_GET['datos'])) { 
$id = $_GET['datos']; 

    /*Here is all the sql statements, and the mysqli query*/

    while ($fila = mysqli_fetch_array($peticion)) {

        $resultado[] = array("pl"=>$fila['pl'],"name"=>$fila['name']);  
    }
  } else {}  


    mysqli_close($conexion);

    echo $_GET['jsoncallback'] . '(' . json_encode($resultado) . ');';

    ?>