[英]how to properly call jquery function from php?
更新:
我正在制作一個喜歡/不喜歡的投票程序,它在 Firefox 3、Chrome 和 Safari 中按照我想要的方式工作。 However, it doesn't seem to be working in Firefox 4. For example, I've made a form such that after the user clicks the submit button and the data is sent into the SQL table, a jquery animation is supposed to play. 這是完整的代碼:
<script type="text/javascript" src="opacity.js"></script>
<link href="voter.css" rel="stylesheet" type="text/css" />
<?php
mysql_connect("","","") or die("Error connecting to db");
mysql_select_db("") or die("Error connecting to db");
$currAdd2 = $_SERVER["REQUEST_URI"];
$currAdd2 = substr($currAdd2, 0, -9);
$currAdd2 = substr($currAdd2, 11);
$numrow1 = mysql_query("SELECT * FROM rate WHERE apt = '$currAdd2' AND likes = 1 ");
$numlikes = mysql_num_rows($numrow1);
$numrow2 = mysql_query("SELECT * FROM rate WHERE apt = '$currAdd2' AND likes = 0 ");
$numdislikes = mysql_num_rows($numrow2);
$numrow3 = mysql_query("SELECT * FROM rate WHERE apt = '$currAdd2' ");
$totalvotes = mysql_num_rows($numrow3);
$likewidth = ($numlikes/($totalvotes+1)) * 400;
$dislikewidth = ($numdislikes/($totalvotes+1)) * 400;
?>
<form action= '<?php echo $_SERVER['PHP_SELF']; ?>'; method='post'>
<table align='left' width='500px' border='0' cellpadding='0' cellspacing='0'>
<? echo"
<tr>
<td>
<div id='blue'><input type='image' name='blue' id='likebutton' value='blue' src='../zrating/like.png'
/></div>
</td>
<td>
<b>$numlikes Like</b>
<div id='like' style='width:$likewidth'><div id='dis'></div></div><br>
</td>
</tr>
<tr>
<td>
<div id='red'><input type='image' name='red' id='dislikebutton' value='red' src='../zrating/dislike.png'
/></div>
</td>
<td>
<b>$numdislikes Dislike</b>
<div id='dislike' style='width:$dislikewidth'><div id='dis'></div></div><br>
</td>
</tr>
<tr>
<td>
</td>
<td>
<div id='success'><br><br>Thanks for voting!</div>
<div id='fail'><br><br>You are only allowed 1 vote per apartment.</div>
</td>
</tr>
</table>
</form>
";
//check ip address
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
if ( isset( $_POST['blue'] ) )
{
$currAdd = $_SERVER["REQUEST_URI"];
$currAdd = substr($currAdd, 0, -9);
$currAdd = substr($currAdd, 11);
$ipquery = mysql_query ("SELECT * FROM rate WHERE ip = '$ip' AND apt = '$currAdd' ");
$ipquery = mysql_fetch_assoc($ipquery);
$ipquery = $ipquery['ip'];
if ($ipquery == $ip)
{
echo "<script type='text/javascript' src='jquery.js'></script>";
echo "<script type='text/javascript'>
$(document).ready(function()
{
$('#fail').animate({width:300},1000);
$('#fail').animate({height:100},1000);
$('#fail').animate({width:300,height:100},1400);
$('#fail').fadeOut(5000);
}); </script>";
}
else
{
mysql_query ("INSERT INTO rate VALUES ('','$currAdd', '1', '$ip')");
$rankqry = mysql_query ("SELECT * FROM rank WHERE apt = '$currAdd' ");
$rankqry = mysql_fetch_assoc($rankqry);
$rankqry = $rankqry['rank'];
$rankupdate = $rankqry + 1;
if($rankupdate < 0)
{
$rankupdate = 0;
}
mysql_query ("UPDATE rank SET rank = '$rankupdate' WHERE apt = '$currAdd' ");
$likesqry = mysql_query ("SELECT * FROM rank WHERE apt = '$currAdd' ");
$likesqry = mysql_fetch_assoc($likesqry);
$likesqry = $likesqry['likes'];
$likesupdate = $likesqry +1;
mysql_query ("UPDATE rank SET likes = '$likesupdate' WHERE apt = '$currAdd' ");
echo "<script type='text/javascript' src='jquery.js'></script>";
echo "<script type='text/javascript'>
$(document).ready(function()
{
$('#success').animate({width:300},1000);
$('#success').animate({height:100},1000);
$('#success').animate({width:300,height:100},1400);
$('#success').fadeOut(5000);
}); </script>";
}
}
if ( isset( $_POST['red'] ) )
{
$currAdd = $_SERVER["REQUEST_URI"];
$currAdd = substr($currAdd, 0, -9);
$currAdd = substr($currAdd, 11);
$ipquery = mysql_query ("SELECT * FROM rate WHERE ip = '$ip' AND apt = '$currAdd' ");
$ipquery = mysql_fetch_assoc($ipquery);
$ipquery = $ipquery['ip'];
if ($ipquery == $ip)
{
echo "<script type='text/javascript' src='jquery.js'></script>";
echo "<script type='text/javascript'>
$(document).ready(function()
{
$('#fail').animate({width:300},1000);
$('#fail').animate({height:100},1000);
$('#fail').animate({width:300,height:100},1400);
$('#fail').fadeOut(5000);
}); </script>";
}
else
{
mysql_query ("INSERT INTO rate VALUES ('','$currAdd', '0', '$ip')");
$rankqry = mysql_query ("SELECT * FROM rank WHERE apt = '$currAdd' ");
$rankqry = mysql_fetch_assoc($rankqry);
$rankqry = $rankqry['rank'];
$rankupdate = $rankqry - 1;
if($rankupdate < 0)
{
$rankupdate = 0;
}
mysql_query ("UPDATE rank SET rank = '$rankupdate' WHERE apt = '$currAdd' ");
$dislikesqry = mysql_query ("SELECT * FROM rank WHERE apt = '$currAdd' ");
$dislikesqry = mysql_fetch_assoc($dislikesqry);
$dislikesqry = $dislikesqry['dislikes'];
$dislikesupdate = $dislikesqry +1;
mysql_query ("UPDATE rank SET dislikes = '$dislikesupdate' WHERE apt = '$currAdd' ");
echo "<script type='text/javascript' src='jquery.js'></script>";
echo "<script type='text/javascript'>
$(document).ready(function()
{
$('#success').animate({width:300},1000);
$('#success').animate({height:100},1000);
$('#success').animate({width:300,height:100},1400);
$('#success').fadeOut(5000);
}); </script>";
}
}
?>
我使用了 jquery 庫的 1.4.2 版和最新版本,但仍然沒有運氣。 在此先感謝您的幫助。
我正在使用最新版本的 jQuery (1.6.1),以下代碼在我的服務器上運行得非常好:
<?php
echo '<html>
<head>
</head>
<body>
<div id="success">
Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success!
</div>
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(\'#success\').animate({width:300},1000);
$(\'#success\').animate({height:100},1000);
$(\'#success\').animate({width:300,height:100},1400);
$(\'#success\').fadeOut(5000);
});
</script>
</body></html>';
?>
編輯:這是我的測試 PHP 腳本的鏈接
第二次編輯:我想在我的答案中添加一些內容。 如果沒有上下文,很難判斷這是否是一個問題,但請確保在調用 jQuery 之前加載 jQuery JS 文件。 您進行的 animation 調用可以在 HTML 塊之外完成,但在加載 jQuery JS 文件之前無法完成。 例如,這將起作用:
<?php
echo '<html>
<head>
</head>
<body>
<div id="success">
Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success!
</div>
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
</body></html>';
if ( isset( $_POST['submit'] ) )
{
mysql_query ("INSERT INTO table VALUES ('','', '', '')");
echo "<script type='text/javascript'>
$(document).ready(function()
{
$('#success').animate({width:300},1000);
$('#success').animate({height:100},1000);
$('#success').animate({width:300,height:100},1400);
$('#success').fadeOut(5000);
}); </script>";
}
?>
但這不會:
<?php
echo '<html>
<head>
</head>
<body>
<div id="success">
Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success! Success!
</div>
<script type="text/javascript">
$(document).ready(function()
{
$(\'#success\').animate({width:300},1000);
$(\'#success\').animate({height:100},1000);
$(\'#success\').animate({width:300,height:100},1400);
$(\'#success\').fadeOut(5000);
});
</script>
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
</body></html>';
?>
使用在線jQuery 1.6.1文件
<form action= '<?php echo $_SERVER['PHP_SELF']; ?>'; method='post'>
<table align='left' width='500px' border='0' cellpadding='0' cellspacing='0'>
<?
// Using online jQuery 1.6.1 file
echo"
<tr>
<td>
<div id='blue'><input type='image' name='blue' id='likebutton' value='blue' src='../zrating/like.png'
/></div>
</td>
<td>
<b>$numlikes Like</b>
<div id='like' style='width:$likewidth'><div id='dis'></div></div><br>
</td>
</tr>
<tr>
<td>
<div id='red'><input type='image' name='red' id='dislikebutton' value='red' src='../zrating/dislike.png'
/></div>
</td>
<td>
<b>$numdislikes Dislike</b>
<div id='dislike' style='width:$dislikewidth'><div id='dis'></div></div><br>
</td>
</tr>
<tr>
<td>
</td>
<td>
<div id='success'><br><br>Thanks for voting!</div>
<div id='fail'><br><br>You are only allowed 1 vote per apartment.</div>
</td>
</tr>
</table>
</form>
";
echo "<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.1.min.js'></script>";
echo "<script type='text/javascript'>
$(document).ready(function()
{
$('#fail').animate({width:200},1000);
$('#fail').animate({height:100},1000);
$('#fail').fadeOut(5000);
}); </script>";
?>
如果它適用於除 Firefox 4 以外的所有瀏覽器,您可能需要查看此線程:
http://forum.jquery.com/topic/jquery-1-4-x-firefox-4-beta-ajax-callbacks
提交的數據是用ajax嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.