簡體   English   中英

我無法從我的PHP文件接收JS中的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM