如何从外部javascript文件访问php变量

如何从外部javascript文件访问php变量,javascript,php,jquery,html,mysql,Javascript,Php,Jquery,Html,Mysql,如何从外部javascript文件访问php变量 这是我的get.js文件 $(function(){ $(".search").keyup(function() { var searchid = $(this).val(); var dataString = 'search='+ searchid; if(searchid!='') { $.ajax({ type: "POST", url: "search.php", data: dataSt

如何从外部javascript文件访问php变量

这是我的get.js文件

$(function(){

$(".search").keyup(function() 

{ 

var searchid = $(this).val();

var dataString = 'search='+ searchid;

if(searchid!='')

{

    $.ajax({
    type: "POST",
    url: "search.php",
    data: dataString,
    cache: false,
    success: function(html)
    {
    $("#result").html(html).show();
    }
    });
}return false;    
});
这是我的search.php文件

<?php

include('db.php');

if($_POST)
{

$q=$_POST['search'];

$sql_res=mysql_query("select id,name,email from detail where name like '%$q%' or email like '%$q%' order by id LIMIT 5");

while($row=mysql_fetch_array($sql_res))

{
$username=$row['name'];

$email=$row['email'];

$b_username='<strong>'.$q.'</strong>';

$b_email='<strong>'.$q.'</strong>';

$final_username = str_ireplace($q, $b_username, $username);

$final_email = str_ireplace($q, $b_email, $email);

?>
<div class="show" align="left">

<span class="name"><?php echo $username; ?></span>&nbsp;<br/><?php echo $email; ?><br/>

</div>

<?php

}

}

?>

我发现将变量从PHP导出到JavaScript的最简单方法是使用一个代码段:

<script type="text/javascript">var username = '<?=$username?>';</script>
var username='';
这将在生成页面时将名为“username”的新JavaScript变量设置为PHP变量“$username”的值。将此代码段放在上面包含“get.js”的页面标题中,并在“get.js”中使用变量“username”

注意

<?=$var?>

这是一条捷径

<?php echo $var ?>

对于获取PHP变量,您可以做几件事

创建用于存储php变量的隐藏元素,以便可以从javascript获取该变量

<input type="hidden" id="user-name" value="<?php echo $username; ?>"> 
或者,您可以在search.php文件中定义一个javascript变量,如下所示:

<script type="text/javascript">
   var username = '<?php echo $username; ?>';
</script>

用于获取用户名。

我喜欢php,它对html一无所知

尝试更改search.php以返回json而不是html:

...
$result = array('users' => array(), 'method'=>'search');
while($row=mysql_fetch_array($sql_res))
{
  $result['users'][] = $row;
}
header('Content-type: application/json; charset=UTF-8');
echo json_encode($result);
并用javascript处理所有接收到的数据:

success: function(json) {
 var data = JSON.parse(json);
 console.log(data);
 // change DOM with new data etc.
}

Matt,但我使用的是外部js文件,我不想将其放入index.php,有数千条记录,因此我如何处理这些记录。在这种情况下,可以:-返回带有用户名和电子邮件属性的JSON对象,并在成功处理程序中构造html,或者-插入html后,使用JQuery获取span.name的内容如果这个脚本不是由php呈现的,那么就不能使用Bono,因为有数千条记录。所以我想用for循环展示这些代码。我认为您忽略了服务器代码和客户端代码之间的区别,以及它们如何通过http进行交互。我首选的方法是将
search.php
更改为返回
json
,而不是html,并用javascript处理所有接收到的数据。
$(".name").val();
...
$result = array('users' => array(), 'method'=>'search');
while($row=mysql_fetch_array($sql_res))
{
  $result['users'][] = $row;
}
header('Content-type: application/json; charset=UTF-8');
echo json_encode($result);
success: function(json) {
 var data = JSON.parse(json);
 console.log(data);
 // change DOM with new data etc.
}