【问题标题】:Putting checkbox values into a variable with PHP BEFORE form being submitted在提交表单之前使用 PHP 将复选框值放入变量中
【发布时间】:2016-05-17 02:48:36
【问题描述】:

我有一系列简单的复选框。

<select>
    <option class="menuoption2" value="gold">Gold</option>
    <option class="menuoption2" value="silver">Silver</option>
    <option class="menuoption2" value="bronze">Bronze</option>
</select>

我只想将选中的那些放入 PHP 变量中。但是请注意,没有提交按钮。这是故意的,我得到的简报不允许这样做;单击复选框后,我的变量值必须以简单的&lt;div&gt; 显示。我也无法刷新页面。我知道我可以使用 $_POST - 但前提是我可以提交任何东西并且我也可以使用 jQuery(我之前确实这样做过)来执行此操作,但最终我需要 PHP 变量中的这些值,而不是 JS 变量。有什么想法吗?

【问题讨论】:

  • 为什么不能将select 包裹在form 中并添加submit 按钮?
  • @Liam 您应该查看update-div-with-jquery-ajax-response 您可以使用从 aJax 请求返回的任何内容来更新 div。

标签: php html checkbox


【解决方案1】:

HTML

<select onchange="postit(event)">
    <option class="menuoption2" value="gold">Gold</option>
    <option class="menuoption2" value="silver">Silver</option>
    <option class="menuoption2" value="bronze">Bronze</option>
</select>

JS/AJAX

将值发布到 update.php where metal=value

<script type="text/javascript">//<![CDATA[

var xmlhttp;
function postit(event){
   var value = event.target.value;
  xmlhttp=null;
  var Url="update.php"
  if (window.XMLHttpRequest) {
      xmlhttp=new XMLHttpRequest();
  }
  else if (window.ActiveXObject) { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (xmlhttp!=null) {
    xmlhttp.onreadystatechange=getResponse;
     xmlhttp.open("POST", Url, true);
     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
     xmlhttp.send( "metal=" + value);  
  } else {
     alert("UNEXPECTED ERROR: XMLHttpRequest not supported");
  }
}
function getResponse(){
  if (xmlhttp.readyState==4){
    if (xmlhttp.status==200){
      var json = JSON.parse(xmlhttp.responseText);
    }
    else{
      alert("UNEXPECTED AJAX ERROR: : " + xmlhttp.statusText + "HTTP Status: " + xmlhttp.status);
    }
  }
}
//]]>
</script>

PHP

<?php
$metal = $_POST['metal'];

// This is just to validate the received data, 
// mostly needed if you are storing in a database.
$metals = array('gold','silver','bronze');
$status = 'fail';
if($metals[$metal] != null){
   $status = 'pass';
  //store $metal
}

//To return a value to JS after the update, add the code below

$return['status'] = $status;
header(header('Content-Type: text/json; charset=utf-8');
echo json_encode($return);
?>

没有返回值给 JS

从 JS 中删除这两行

var Url="update.php"
xmlhttp.onreadystatechange=getResponse;

删除函数getResponse()

将global var xmlhttp; 作为本地变量移动到 postit() 函数中:

来自

var xmlhttp;
function postit(){

到

function postit(){
var xmlhttp;

【讨论】:

  • 您好,感谢您的输入,但很抱歉,我不明白一些事情(我对 PHP 很陌生)所以我要问:1. 是 update.php 的名字我正在做这一切的页面? 2. JS那段代码应该放在哪里?我可以把它放在与 AJAX 代码相同的 &lt;script&gt; 标记中吗? 3. 我的页面上显示的复选框值在哪里?或者如何让这些值显示在我的页面上?
  • 我编辑了结合 JS 和 AJAX 的答案(AJAX 是 JS)。将 JS/AJAX 复制到您的 HTML 页面中,就在结束 &lt;/body&gt; 标记之前。 AJAX 会将metal 值发布到 update.php 脚本。我将添加一些 PHP 来接收帖子。我不知道您为什么要这样做,所以我无法帮助您保存它。我怀疑可能有更好的方法来做你想做的任何事情。 AJAX 还是很值得了解的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
相关资源
最近更新 更多