如何从外部javascript文件访问php变量
如何从外部javascript文件访问php变量 这是我的get.js文件如何从外部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
$(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> <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.
}