使用ajax调用将php变量传递给javascript函数并在同一页面上获取响应文本

时间:2015-01-17 06:27:57

标签: javascript php ajax function

我在php页面[search.php]上使用php sql数据库连接,用于从变量" $ url"中获取数据库中的数据。并将其传递给javascript函数,其中ajax调用捕获该变量并将其传递给另一个php页面[function.php],这将执行一些函数并将响应文本发送回div中的search.php,其id =&#34 ; rssoutput"看下面给出的代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>search</title>

 <script>
function showRSS(str) {
  if (str.length==0) { 
document.getElementById("rssOutput").innerHTML="";
return;
  }
  if (window.XMLHttpRequest) {

xmlhttp=new XMLHttpRequest();
  } else {   
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  document.getElementById("rssOutput").innerHTML=xmlhttp.responseText;
}
  }
  xmlhttp.open("GET","function.php?q="+str,true);
  xmlhttp.send();
}
</script> 

</head>
<body>

<?php

$con=mysql_connect("localhost","root","");
if(!$con)
 {
 die("could not connect:".mysql_error());
 }
mysql_select_db("dbname",$con);
$query="SELECT * FROM table ";
$result=mysql_query($query);

while($runrows = mysql_fetch_assoc($result))
{
$url = $runrows ['URL'];     

echo "<input type='button'   class='myButton'  onclick='showRSS($url);'     name='artbttn' >
<div class='container'  id='rssOutput' ></div>";     
}
mysql_close($con);
?>
</body>
</html>

所以,我想要实现的是从另一个页面[function.php]获取数据并将其显示在div中的同一页面[search.php]上#rss; rssOutput&#34;当我点击一个按钮。任何人都可以告诉我这是怎么可能的。

2 个答案:

答案 0 :(得分:0)

您可能希望在将urlencode发送到下一页之前使用它,

$url = urlencode($runrows ['URL']);

然后用以下引号括起$ url:onclick='showRSS(\"$url\");'

echo "<input type='button' class='myButton' onclick='showRSS(\"$url\");' name='artbttn' >
<div class='container'  id='rssOutput' ></div>";

这应该有用。

编辑:使用mysqli重写mysql查询

<?php
    $conn = new mysqli('localhost', 'user', 'password', 'dbname');
    if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
    }
    $sql="SELECT * FROM mytbl";
    $result=$conn->query($sql);
    if ($result->num_rows > 0) {
      while($row = $result->fetch_assoc()) {
        $url = urlencode($row['url']);
        echo "<input type='button' class='myButton' onclick='showRSS(\"$url\");' name='artbttn' ><div class='container' id='rssOutput'></div>";
        }
    } else {
      echo "0 results";
    }
    $conn->close();
?>

答案 1 :(得分:0)

我想知道为什么我之前没有得到这个。我认为网址传递存在问题。您需要做的是创建一个会话,如我所示。      

    while($runrows = mysql_fetch_assoc($result))
    {
    $url = urlencode($runrows ['URL']);    
    $_SESSION['u']=$url;
    <input type='button' onclick='showRSS()' class='myButton' name='artbttn' >
    <div class='container'  id='rssOutput' ></div>
    }
    mysql_close($con);
    ?>


<?php
echo<<<script;
<script>
  function showRSS() {

  if (window.XMLHttpRequest) {

   xmlhttp=new XMLHttpRequest();
  } else {    
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
    xmlhttp.onreadystatechange=function() {
   if (xmlhttp.readyState==4 && xmlhttp.status==200) {
     document.getElementById("rssOutput").innerHTML=xmlhttp.responseText;
   }
     }
    xmlhttp.open("GET","function.php",true);
    xmlhttp.send();
   } 
   </script> 
script;
?>
</html>

将以下行添加到function.php

<?php 
session_start();
if(isset($_SESSION['u']){
   $url=$_SESSION['u'];
}
?>

并在您的网页上使用此网址。