[英]I can't receive data in JS from my PHP file
我一直在尝试使用AJAX,JS,JSON和PHP接收信息。 上下文如下:
我有一个JS文件,我从该文件发送一个ID,它接收一个PHP文件,并且该文件进行一些查询,这些查询的数据存储在一个对象中,然后发送到JS文件以更新HTML的某些属性。 我可以将ID从JS正确发送到PHP。 然后,我检查了我是否也可以将信息从查询信息正确传递给PHP对象。
这是问题所在...当我在JS文件中接收到数据并将此信息传递给eval()函数时,它给我一个错误。
笔记:
当我取出eval函数时,我无法访问属性,因为它声明为“ undefined”。
奇怪,但是当我打印参数“ datos”(带有alert())时,会正确显示所有请求的信息。
我的英语说得不好,请原谅我的语法和语义错误。
infoAction.php
<?php
include 'sitioTuristico.php';
$id = $_GET['id'];
$sitio = new sitioTuristico("SI01");
if($sitio->getID_SI()=="INEX"){
print "The place doesn't exist";
exit;
}
$response = new stdClass();
$response->ID_SI = $sitio->getID_SI();
$response->URL = $sitio->getURLS();
$response->Nombre = $sitio->getNombre();
$response->Descripcion = $sitio->getDescripcion();
$response->Promedio_nota = $sitio->getPromedio_Nota();
$response->Nombre_Cat = $sitio->getNombre_Cat();
$response->Nombre_Ciu = $sitio->getNombre_Ciu();
/* i tried this way too
$arr = array('ID_SI' => $sitio->getID_SI(),
'URL' => $sitio->getURLS(),
'Nombre'=> $sitio->getNombre(),
'Descripcion'=> $sitio->getDescripcion(),
'Promedio_nota'=> $sitio->getPromedio_Nota(),
'Nombre_Cat' => $sitio->getNombre_Cat(),
'Nombre_Ciu' => $sitio->getNombre_Ciu());
*/
echo json_encode($response);
?>
信息-turistica-info.js
$(document).ready(function(){
$.ajax({
type: "GET",
url: "php/indexAction.php",
data: { id:loadData() },
async: true,
success: function(datos){
var dataJson = eval(datos); **//here throws an error**
alert(datos); **//It print all the information correctly**
alert(datos.ID_SI); **//It print "undefined"**
$('img[name=imagenPrincipal]').attr("src",dataJson[i].URL[0]);
$('img[name=imagenPrincipal]').attr("id",dataJson[i].ID_SI);
},
首先,使用JSON.parse(datos);
代替eval
。 其次,您需要使用以下内容:
$('img[name=imagenPrincipal]').prop("src",dataJson.URL);
$('img[name=imagenPrincipal]').prop("id",dataJson.ID_SI);
您正在使用dataJson [i] .URL [0],甚至没有在任何地方定义“ i”。 也不要使用eval,因为根据Douglas Crockford的说法eval ===邪恶。 使用JSON.parse(datos),然后执行以下操作:
$('img[name=imagenPrincipal]').prop("src",dataJson.URL);
$('img[name=imagenPrincipal]').prop("id",dataJson.ID_SI);
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.