ajax从php页面中获取变量值

时间:2014-03-22 12:53:13

标签: javascript php jquery ajax

通过ajax我要求一个php页面,它将从数据库中获取一些信息。当处理数据时,我将它们回显到某个标签,并通过JS我定位这些标签并获取它们的内容。这是我在php和JS之间传递数据的唯一方法,但我觉得它不太正确。什么是获取php变量值的最佳方法:

$var1 = 24515875;

进入JS变量?

2 个答案:

答案 0 :(得分:1)

使用AJAX在PHP和JavaScript之间调用时,我建议您始终使用JSON(Javascript Object Notation)进行编码。

<?php
   // Set Header (Always should be first commands just in case of thrown errors)
   header('Content-type: application/json');
   $data = array(
      'message' => 'Hello World',
      'error' => false
   );
   echo json_encode($data);
?>

对于javascript,您可以使用XMLHttpRequest。我不建议使用jQuery,除非你需要它用于脚本的其他方面。

function request(url,callback) {
   var req = new XMLHttpRequest();
   req.onreadystatechange = function() {
      if(req.readyState == 4 && req.status == 200) {
         var json = JSON.parse(req.responseText);
         if(typeof callback === "function") {
            callback(json);
         }
      }else{
         // Handle Error
      }
   }
   req.open("GET",url,true);
   req.send();
}

function callback_func(json) {
   // Function gets called when Ajax is finished
   console.dir(json);
}

request("ajax.php",callback_func);

答案 1 :(得分:0)

我不知道以下建议是否过于复杂,但是: 您可以使用jQuery Ajax Get从PHP请求JSON数据。 这适用于传递数组,例如从数据库到客户端的结果集。

在PHP方面你会做一个简单的事情:

<?php
header('Content-type: application/json');
echo json_encode($myData);
?>

在JS方面,你可以通过以下方式访问它:

$.getJSON( "getjsondata.php", function( data ) {
   alert(data);
   // do whatever, like appending to html element

   // next code section is the answer to your question from the comment:
   // how to iterate over the data result set?      

   // create new DomElement for insertion: here foreach row a new list item
   var items = [];
   $.each( data, function( key, val ) {
      items.push( "<li id='" + key + "'>" + val + "</li>" );
   });

   // then insert the list items into a UL and append that to the body
   $( "<ul/>", {
       "class": "my-new-list",
       html: items.join( "" )
   }).appendTo( "body" );  

   // to access the individual properties you would do
   alert(data.property);    

});

http://api.jquery.com/jquery.getjson/