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