我无法从PHP文件中接收JS中的数据

时间:2016-11-06 22:05:30

标签: javascript php jquery json ajax

我一直在尝试使用AJAX,JS,JSON和PHP接收信息。 上下文如下:

我有一个JS文件,我从这个文件发送一个id,它接收一个PHP文件,这个文件进行一些查询,其中的数据存储在一个对象中并发送到一个JS文件来更新一些属性HTML。 我可以正确地将JS从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);

    },

2 个答案:

答案 0 :(得分:1)

首先,使用JSON.parse(datos);代替eval。 其次,你需要使用这样的东西:

   $('img[name=imagenPrincipal]').prop("src",dataJson.URL);
   $('img[name=imagenPrincipal]').prop("id",dataJson.ID_SI);

答案 1 :(得分:1)

您正在使用dataJson [i] .URL [0]并且您甚至没有在任何地方定义“i”。根据Douglas Crockford的说法,也不要使用eval因为eval === evil。使用JSON.parse(datos)然后执行以下操作:

$('img[name=imagenPrincipal]').prop("src",dataJson.URL);
$('img[name=imagenPrincipal]').prop("id",dataJson.ID_SI);

希望它有所帮助!