2014-02-19 136 views
0

变量通过ajax传递,它是数据库名称。当链接被点击时,它应该从数据库中检索数据。链接和变量位于同一页面上。这里是链接的代码:通过ajax传递字符串变量

$x = strval($_GET['x']);  

echo '<a href="#" onclick="showInformation('.$x.')">'.$seatid.'</a>'; 

$ x变量包含数据库的表名称。这里是AJAX代码:

function showInformation(str) 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
{// code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("txtInfo").innerHTML=xmlhttp.responseText; 
} 
} 
xmlhttp.open("GET","getinfo.php?x="+str,true); 
xmlhttp.send(); 
} 

这里是getinfo.php:

<?php 
session_start(); 
$_SESSION['login']="1"; 
$x = strval($_GET['x']); 

$con = mysql_connect('localhost','root','Newpass123#','seatmapping');  
if (!$con){ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db('seatmapping'); 
$sql="SELECT name, seatid FROM $x WHERE seatid = 1"; 
$result = mysql_query($sql) or die("Query Error " . mysql_error()); 
... 
... 
?> 

我不能让它当我点击链接它不会显示从数据工作表。 请帮帮我。任何形式的帮助表示赞赏。在此先感谢..

+0

公开表名并不是一个好的做法.. –

+2

'//代码为IE6,IE5' ......我无言以对。 –

+0

2014年不使用jQuery ajax ...我无言以对。 :) –

回答

0

能否请您试试这个:

替换行

echo '<a href="#" onclick="showInformation('.$x.')">'.$seatid.'</a>'; 

随着下面:

echo '<a href="#" onclick="showInformation(\''.$x.'\')">'.$seatid.'</a>'; 

这将解决您的问题。

+0

哇!你是一个天才,它的工作。非常感谢你! – rez

+0

如果你没有通过AJAX发送一个空的对象而不是字符串,那么这个方法是有意义的,但是仍然看看我提到的安全问题,你会发现你的会话不会阻止任何人出局 –

+0

@ BRadC是的,这是完全合理的。我已经看过错误日志,就像你说的那样,它说它是未定义的。现在我明白了。感谢您的提示。并感谢你提醒我有关会议.. – rez

0

您未通过预期元素的ID

echo '<a href="#" id="txtInfo" onclick="showInformation('.$x.')">'.$seatid.'</a>'; 

替换该行,而不是

echo '<a href="#" onclick="showInformation('.$x.')">'.$seatid.'</a>'; 
+0

这将是如果你试图用AJAX/SQL数据替换标签的内容,但你应该确保HTML,可能是一个div,并存在正确的ID –

+0

@Sagar Panchal我有一个div ID = “txtInfo”。我还应该把它放在标签中吗? – rez

+0

@rez,nop然后找到正确的文件通信,否则使用jquery ajax,它很容易退出。 – SagarPPanchal