我在获取php变量到我的.js文件时遇到了问题,并使其正常工作。
这是我的php函数,我试图传递变量:
function java_scr_preview ($foto)
{
echo '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>';
echo '<script type="text/javascript">';
echo 'var pass_this_variable = "'.$foto.'"';
echo '</script>';
echo '<script type="text/javascript" src="ddimgtooltip.js">';
echo '<SCRIPT LANGUAGE="JavaScript">';
echo 'function Preview(url)';
echo '{';
echo "window.open(url,'_blank','location=no,scrollbars=yes,toolbar=no,width=500,height=700')";
echo '}';
echo '</SCRIPT>';
}
这是我的整个PHP脚本(如果需要)
<?php
require ("auth.php");
if (isset($_GET['cmd']))
$cmd = $_GET['cmd'];
else
$cmd = "";
switch ($cmd) {
case "":
html_open_std ();
ingave_artikel ("", "", "", "");
html_close ();
break;
case "search":
html_open_std ();
ingave_artikel ("", "", "", "");
toon_banden ();
html_close ();
break;
case "preview":
$foto = $_GET['foto'];
toon_preview ($foto);
break;
}
#------------------------------------------------------------
function ingave_artikel ($art1, $art2, $art3, $errormelding)
{
global $urlphp;
global $urlcgi;
global $ad;
echo "<div id=\"invoeren\">";
echo "<h1>Ingave bandenmaat</h1>\n";
echo "<form method=\"POST\" action=\"?cmd=search\">\n";
echo "<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n";
echo "<tr>\n";
echo "<td>Breedte</td>\n";
echo "<td> </td>\n";
echo "<td>Hoogte</td>\n";
echo "<td> </td>\n";
echo "<td>Diameter</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td><input type=\"text\" name=\"art1\" value=\"" . $art1 .
"\" size=\"5\"></td>\n";
echo "<td>/</td>\n";
echo "<td><input type=\"text\" name=\"art2\" value=\"" . $art2 .
"\" size=\"5\"></td>\n";
echo "<td>x</td>\n";
echo "<td><input type=\"text\" name=\"art3\" value=\"" . $art3 .
"\" size=\"5\"></td>\n";
echo "</tr>\n";
if (! empty ($errormelding))
echo "<tr><td colspan=\"5\"><font color=\"red\">" .
$errormelding . "</td></tr>\n";
echo "<tr>\n";
echo "<td colspan=\"3\">\n";
echo "<input type=\"submit\" value=\"Verwerk\">\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</form>\n";
echo "</div>\n";
}
#------------------------------------------------------------
function toon_banden ()
{
global $urlphp;
global $urlcgi;
global $gateway;
java_scr_preview ();
$art1 = trim($_POST["art1"]);
$art2 = trim($_POST["art2"]);
$art3 = trim($_POST["art3"]);
if (empty ($art1) || empty ($art3)) {
ingave_artikel ($art1, $art2, $art3,
"Alle velden ingeven s.v.p.");
return (-1);
}
$f = open_url ($gateway . "?3," . $art1 . $art2 . "R" . $art3);
if ($f == NULL)
return (-1);
$t = 0;
$ncol = 4;
$ar = explode (PHP_EOL, $f);
if (substr($ar[0],0,7) == "*ERROR*") {
echo "<p>";
echo "<h1>";
echo "Gateway functions are disabled !" . "<br>";
echo "</p>";
return (-1);
}
foreach ($ar as $rec) {
if ($rec == 0) {
continue;
}
list ($sysnr,
$artikel,
$merk,
$rubriek,
$omschrijving,
$valuta,
$netto,
$bruto,
$beschikbaar,
$foto,
$draagvrm,
$levid,
$garpr,
$altpr,
$eancode) = explode ("\t", $rec);
if ($sysnr == "*END*")
break;
if ($t == 0) {
echo "<table border=0 cellspacing=0 cellpadding=0>";
echo "<tr><td align=center>";
echo "<div id=\"uitkomst\">";
echo "<h1>Overzicht beschikbare voorraad</h1>\n";
echo "<table border=\"0\" cellspacing=\"2\" cellpadding=\"5\">\n";
echo "<td><b>Merk</td>\n";
echo "<td><b>Omschrijving</td>\n";
echo "<td><b>LI/SI</td>\n";
echo "<td align=\"right\"><b>Bruto</td>\n";
echo "<td align=\"right\"><b>Netto " . $valuta . "</td>\n";
echo "<td align=\"right\"><b>Beschikbaar</td>\n";
echo "<td></td>\n";
}
### klantprijs opslag 25 %
$klantpr = $netto * 1.25;
$klantpr_str = sprintf ("%7.2f", $klantpr);
echo "<tr>\n";
echo "<td>" . $merk . "</td>\n";
echo "<td>" . $omschrijving . "</td>\n";
echo "<td>" . $draagvrm . "</td>\n";
echo "<td align=\"right\">" . $bruto . "</td>\n";
echo "<td align=\"right\">" . $klantpr_str . "</td>\n";
echo "<td align=\"right\">" . $beschikbaar . "</td>\n";
if (empty ($foto))
echo "<td></td>\n";
else {
echo "<td>";
echo '<a rel="imgtip[2]" href="javascript:Preview';
echo "('?cmd=preview&foto=$foto')";
echo '">';
echo "Foto";
echo '</a>';
echo "</td>\n";
}
echo "</tr>\n";
$t++;
}
if ($t == 0)
ingave_artikel ($art1, $art2, $art3,
"Geen artikelen gevonden !");
else {
echo '</table>';
echo '</div>';
}
}
#------------------------------------------------------------
function toon_preview ($fotonr)
{
global $imglarge;
html_open_std ();
echo '<center>';
echo '<br>';
echo '<img border="0" src="' . $imglarge . '/' . $fotonr . '">';
html_close ();
}
#------------------------------------------------------------
function toon_selektie ($merk, $model, $type, $diameter)
{
echo '<table border="0" cellspacing="0" cellpadding="0">';
echo '<tr><td width="70">Merk</td><td><b>' . $merk . '</td></tr>';
echo '<tr><td>Model</td><td><b>' . $model . '</td></tr>';
echo '<tr><td>Type</td><td><b>' . $type . '</td></tr>';
echo '<tr><td>Diameter</td><td><b>' . $diameter . '</td></tr>';
echo '</table>';
echo '<hr>';
}
#------------------------------------------------------------
function open_url ($url)
{
global $login;
global $passwd;
$ch = curl_init("http://$url");
curl_setopt($ch, CURLOPT_USERPWD, "$login:$passwd");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$file = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$errno = curl_errno($ch);
$error = curl_error($ch);
if ($status == 200) {
return ($file);
}
else {
echo "<p>";
echo "<h1>";
if ($status == 401) {
echo "Authentication failed !";
}
else {
echo "Errno: " . $errno . "<br>";
echo "Error: " . $error . "<br>";
echo "HTTP status : " . $status . "<br>";
}
echo "</p>";
return (NULL);
}
}
#------------------------------------------------------------
function html_open_std ()
{
echo '<html>';
echo '<head>';
echo '<title>Banden uit voorraad leverbaar</title>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">';
echo '<meta name="robots" content="noinclude, nofollow">';
echo '<link rel="stylesheet" href="tyre.css" type="text/css">';
echo '</head>';
echo '<body>';
}
#------------------------------------------------------------
function html_close ()
{
echo "</body>";
echo "</html>";
}
#------------------------------------------------------------
function java_scr_preview ($foto)
{
echo '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>';
echo '<script type="text/javascript">';
echo 'var pass_this_variable = "'.$foto.'"';
echo '</script>';
echo '<script type="text/javascript" src="ddimgtooltip.js">';
echo '<SCRIPT LANGUAGE="JavaScript">';
echo 'function Preview(url)';
echo '{';
echo "window.open(url,'_blank','location=no,scrollbars=yes,toolbar=no,width=500,height=700')";
echo '}';
echo '</SCRIPT>';
}
?>
这是我的整个.js文件:
这是一个工具提示脚本,我想动态地显示我的图像:
/* Image w/ description tooltip v2.0
* Created: April 23rd, 2010. This notice must stay intact for usage
* Author: Dynamic Drive at http://www.dynamicdrive.com/
* Visit http://www.dynamicdrive.com/ for full source code
*/
var ddimgtooltip={
tiparray:function(){
var tooltips=[]
//define each tooltip below: tooltip[inc]=['path_to_image', 'optional desc', optional_CSS_object]
//For desc parameter, backslash any special characters inside your text such as apotrophes ('). Example: "I\'m the king of the world"
//For CSS object, follow the syntax: {property1:"cssvalue1", property2:"cssvalue2", etc}
tooltips[0]=["red_balloon.gif", "Here is a red balloon<br /> on a white background", {background:"#FFFFFF", color:"black", border:"5px ridge darkblue"}]
tooltips[1]=["duck2.gif", "Here is a duck on a light blue background.", {background:"#DDECFF", width:"200px"}]
tooltips[2]=["http://www.website.net/preview/test/pass_this_variable"]
tooltips[3]=["../dynamicindex17/bridge.gif", "Bridge to somewhere.", {background:"white", font:"bold 12px Arial"}]
return tooltips //do not remove/change this line
}(),
tooltipoffsets: [20, -30], //additional x and y offset from mouse cursor for tooltips
//***** NO NEED TO EDIT BEYOND HERE
tipprefix: 'imgtip', //tooltip ID prefixes
createtip:function($, tipid, tipinfo){
if ($('#'+tipid).length==0){ //if this tooltip doesn't exist yet
return $('<div id="' + tipid + '" class="ddimgtooltip" />').html(
'<div style="text-align:center"><img src="' + tipinfo[0] + '" /></div>'
+ ((tipinfo[1])? '<div style="text-align:left; margin-top:5px">'+tipinfo[1]+'</div>' : '')
)
.css(tipinfo[2] || {})
.appendTo(document.body)
}
return null
},
positiontooltip:function($, $tooltip, e){
var x=e.pageX+this.tooltipoffsets[0], y=e.pageY+this.tooltipoffsets[1]
var tipw=$tooltip.outerWidth(), tiph=$tooltip.outerHeight(),
x=(x+tipw>$(document).scrollLeft()+$(window).width())? x-tipw-(ddimgtooltip.tooltipoffsets[0]*2) : x
y=(y+tiph>$(document).scrollTop()+$(window).height())? $(document).scrollTop()+$(window).height()-tiph-10 : y
$tooltip.css({left:x, top:y})
},
showbox:function($, $tooltip, e){
$tooltip.show()
this.positiontooltip($, $tooltip, e)
},
hidebox:function($, $tooltip){
$tooltip.hide()
},
init:function(targetselector){
jQuery(document).ready(function($){
var tiparray=ddimgtooltip.tiparray
var $targets=$(targetselector)
if ($targets.length==0)
return
var tipids=[]
$targets.each(function(){
var $target=$(this)
$target.attr('rel').match(/\[(\d+)\]/) //match d of attribute rel="imgtip[d]"
var tipsuffix=parseInt(RegExp.$1) //get d as integer
var tipid=this._tipid=ddimgtooltip.tipprefix+tipsuffix //construct this tip's ID value and remember it
var $tooltip=ddimgtooltip.createtip($, tipid, tiparray[tipsuffix])
$target.mouseenter(function(e){
var $tooltip=$("#"+this._tipid)
ddimgtooltip.showbox($, $tooltip, e)
})
$target.mouseleave(function(e){
var $tooltip=$("#"+this._tipid)
ddimgtooltip.hidebox($, $tooltip)
})
$target.mousemove(function(e){
var $tooltip=$("#"+this._tipid)
ddimgtooltip.positiontooltip($, $tooltip, e)
})
if ($tooltip){ //add mouseenter to this tooltip (only if event hasn't already been added)
$tooltip.mouseenter(function(){
ddimgtooltip.hidebox($, $(this))
})
}
})
}) //end dom ready
}
}
//ddimgtooltip.init("targetElementSelector")
ddimgtooltip.init("*[rel^=imgtip]")
这条规则:
tooltips[2]=["http://www.website.net/preview/test/pass_this_variable"]
应显示变量$ foto ...
任何人都可以帮我解决这个问题吗?现在工作2天,无法弄清楚......
更新
我尝试了一些东西,并设法获得一些信息给我的javascript:
.php文件
function java_scr_preview ()
{
echo '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>';
?>
<?php
$foto = "image.jpg";
?>
<script type="text/javascript">
var foto = "<?= $foto ?>";
</script>
<?php
echo '<script type="text/javascript" src="ddimgtooltip.js">';
echo '<SCRIPT LANGUAGE="JavaScript">';
echo 'function Preview(url)';
echo '{';
echo "window.open(url,'_blank','location=no,scrollbars=yes,toolbar=no,width=500,height=700')";
echo '}';
echo '</SCRIPT>';
}
?>
.js文件
tooltips[2]=["http://www.website.net/preview/test/"+ foto];
alert(tooltips[2]);
这在我的警告中显示http://www.website.net/preview/test/image.jpg ...
但是当我这样做的时候:
$foto = $_GET["foto"];
我收到了一个错误:
注意:未定义索引:第291行/var/www/html/website.nl/test/test.php中的foto
仅在我的警报中http://www.website.net/preview/test/ ...
我应该如何传递动态变量?
答案 0 :(得分:1)
更改
tooltips[2]=["http://www.website.net/preview/test/pass_this_variable"]
到
tooltips[2]=["http://www.website.net/preview/test/" + pass_this_variable]
你没有使用你刚刚传递文本的变量。
答案 1 :(得分:0)
在函数 toon_banden()中,您调用 java_scr_preview(),而您没有传递预期的arg。