Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP onclick在一个select选项上_Javascript_Php_Html_Select_Option - Fatal编程技术网

Javascript PHP onclick在一个select选项上

Javascript PHP onclick在一个select选项上,javascript,php,html,select,option,Javascript,Php,Html,Select,Option,当我选择一个选项并单击按钮时,我想打开图像。为什么这不起作用 <form action="#" method="post"> <select name="carlist"> <option value="renault">Renault</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</o

当我选择一个选项并单击按钮时,我想打开图像。为什么这不起作用

<form action="#" method="post">
<select name="carlist">
  <option value="renault">Renault</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

<input name="submit" type="button" value="Show the car!" onclick="location.href='images/<?php echo($_POST['carlist']); ?>.jpg'" />
</form>
它只打开images/.jpg,就像PHP代码不起作用一样。

试试这个:

<form action="#" method="post">
<select id="carlist">
  <option value="renault">Renault</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

<input name="submit" type="button" value="Show the car!" onclick="location.href='images/' + document.getElementById('carlist').value + '.jpg'" />
</form>

根本不需要PHP。

您似乎对PHP和Javascript的执行顺序感到困惑。甚至在加载页面之前都会执行,因此没有定义$\u POST变量。这就是它被计算为空字符串的原因。只有在提交表单时,$\u POST才会在连续页面加载中包含表单数据。但是,您永远无法提交表单,因为1您没有type=submit的按钮,2—即使您提交了—执行onclick Javascript可能会阻止提交表单

要解决这个问题,您可能需要使用Javascript或PHP,但不能同时使用两者

Javascript解决方案:

<select id="carlist">
  <option value="renault">Renault</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
<input type="button" onclick="location.href='images/'+document.getElementById('carlist').value+'.jpg';"/>
<?php if(isset($_POST["carlist"])) {header("Location: images/".$_POST["carlist"].".jpg");}?>
<form action="#" method="post">
<select name="carlist">
  <option value="renault">Renault</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

<input type="submit" value="Show the car!"/>
</form>
PHP解决方案:

<select id="carlist">
  <option value="renault">Renault</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
<input type="button" onclick="location.href='images/'+document.getElementById('carlist').value+'.jpg';"/>
<?php if(isset($_POST["carlist"])) {header("Location: images/".$_POST["carlist"].".jpg");}?>
<form action="#" method="post">
<select name="carlist">
  <option value="renault">Renault</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

<input type="submit" value="Show the car!"/>
</form>

您需要更改类型按钮以提交。因为按钮不运行PHP代码。但如果您不想将按钮更改为submit,则需要添加一些javascript来执行该过程。这是我编辑后的代码

<form action="#" method="post">
<select name="carlist">
<option value="renault">Renault</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>

<input name="submit" type="submit" value="Show the car!" onclick="location.href='images/<?php echo($_POST['carlist']); ?>.jpg'" />
</form>

PHP是一种服务器端语言。这意味着您不能在浏览器内部的客户端中使用它。浏览器端客户端语言是JavaScript,您需要将其用于类似的内容。PHP仅在页面呈现时在呈现页面上运行$\u未设置POST['carlist']为空。因为您没有通过提交包含carlist输入的表单来发布上一页的carlist属性。正如jayms所说,您可以为select标记设置一个id,并通过JavaScript代码(如document.getElementbyId.

type=submit而不是button)获取它。您是对的,但是如果我将类型更改为submit,我必须编写一些JavaScript。如果您需要编写一些JavaScript,您可以编写。