2011-11-04 41 views
-1

我真的很沮丧关于我的网站的问题。从一个PHP文件,我得到JSON名单:Javascript函数调用php

{"Data":{"Recipes":{"Recipe_5":{"ID":"5","TITLE":"Spaghetti Bolognese"},"Recipe_7":{"ID":"7","TITLE":"Wurstel"},"Recipe_9":{"ID":"9","TITLE":"Schnitzel"},"Recipe_10":{"ID":"10","TITLE":null},"Recipe_19":{"ID":"19","TITLE":null},"Recipe_20":{"ID":"20","TITLE":"Hundefutter"},"Recipe_26":{"ID":"26","TITLE":"Apfelstrudel"},"Recipe_37":{"ID":"37","TITLE":null},"Recipe_38":{"ID":"38","TITLE":"AENDERUNG"},"Recipe_39":{"ID":"39","TITLE":null},"Recipe_40":{"ID":"40","TITLE":"Schnitzel"},"Recipe_42":{"ID":"42","TITLE":"Release-Test"},"Recipe_43":{"ID":"43","TITLE":"Wurstel2"}}},"Message":null,"Code":200} 

在我的HTML文件中,从来就得到了一个JS函数解析这个JSON数据并将其保存到一个数组。

<script type="text/javascript"> 
    function test() { 
      //var availableTags = new Array(400); 
      //availableTags[0] = "Test"; 
      alert("misstake"); 
      var availableTags = JSON.parse(<?php include("/php/search_new.php"); ?>); 
      alert("misstake"); 
      //var availableTags = JSON.parse(<?php include("/php/getAllRecipes.php"); ?>); 
      alert("misstake"); 
      for(var i=0;i<availableTags.length;i++){ 
       alert("<b>availableTags["+i+"] is </b>=>"+availableTags[i]+"<br>"); 
      } 
      alert("Hallo"); 
     } 
    </script> 

我确定,这个函数被调用是因为我只是用一个alert来尝试它。 Here's我的HTML:

<body> 
     <form action="search.html" onsubmit="test()"> 
      <input type="text" class="searchinput" style="margin-left: 850px; margin-top: 0px; width:170px; background: #fff url(images/search_icon.png) no-repeat 100%;" placeholder="Suchen..."></input> 
      <input type="submit" value="" width: 5px></input> 
     </form>   
</body> 

所以必须有

var availableTags = JSON.parse(<?php include("/php/search_new.php"); ?>); 

问题是什么错误?我怎么弄出来的?

如果您需要PHP:

<?php 
include 'db_connect.php'; 
session_start(); 
     if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > 1200)) { 
     session_destroy(); 
     session_unset(); 
     } 
     else 
     { 
     $_SESSION['last_activity'] = time(); 
     } 
$arr = array('Data' => null,'Message' => null,'Code' => null); 


$sql = "SELECT * FROM RECIPES"; 
$result = mysql_query($sql,$db) or exit("QUERY FAILED!"); 
      while($row = mysql_fetch_array($result)) 
      { 
       $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['ID'] = $row['recipes_id']; 
       $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['TITLE'] = $row['title']; 
      } 
if($arr['Data'] == null) 
{ 
    $arr['Message']= "nothing found"; 
    $arr['Code'] = 404; 
} 
else 
{ 
    $arr['Code'] = 200; 
} 
mysql_close($db); 
echo json_encode($arr); 
?> 
+2

尽量去除'JSON.parse()来':'变种availableTags = <?PHP的包括(...)?>;'。如果你像这样回应JSON,它已经被解释为JavaScript对象,并且你不能解析它。 –

+2

您的HTML文件实际上是一个PHP文件(保存为.php)吗? – apnerve

+0

不,它的index.html! – Harald

回答

1

你不需要做JSON.parse你可以简单地做

var availableTags = <?php include("/php/search_new.php"); ?>; 

,并将其命名你的PHP文件作为somename.php,使确定它在某些本地或托管服务器上。

,你可以看到你的数据作为,

alert(a['Data']["Recipes"]["Recipe_5"]["ID"]);