【问题标题】:POST two values and retrieve result of php function onchangePOST两个值并检索php函数onchange的结果
【发布时间】:2014-12-30 00:40:04
【问题描述】:
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form>
<label>Seleziona l'ente</label>
<select name="data" id="data">
    <option value="PRO - 011142764">COMUNE DI AGLIE'</option>
    <option value="PRO - 011120674">COMUNE DI AGRATE CONTURBIA</option>
</select>
<input type="text" name="textfield" id="textfield" />
</form>

<script>
$('#data').change(function() {
    $.post("richiesta.php", { value: this.value });
    $('#textfield').val(this.value);
});
</script>
</body>
</html>

这是我的简单网页,有 2 个选项。输入标签仅用于测试 POST 数据。

这是richiesta.php,它接收有关更改事件的 POST 数据(我关注了this 线程):

<?php
list($comparto, $ente) = explode("-", $_POST['data'], 2);
echo "comparto: $comparto, ente: $ente";
?>

当我触发更改事件(来自 Firebug)时,会发生以下情况。 POST 没问题:

不幸的是,响应中有空变量($comparto$ente):

explode/list 函数有什么问题?

【问题讨论】:

  • 错行list($comparto, $ente) = explode("-", $_POST['data'], 2);应该是list($comparto, $ente) = explode("-", $_POST['value'], 2);
  • @MudaserAli No. $_POST['data'] 是正确的。 $_POST['data'] 将包含所选选项的值。
  • @Mooseknuckles bro $.post("richiesta.php", { value: this.value }); 您正在使用服务器将数据发布到服务器上,您可以使用 value 访问发布的值如果您想在服务器端访问您发布的数据,请更新 ajax 发布调用通过它到$.post("richiesta.php", { data: this.value });,您将获得$_POST['data']中的发布数据

标签: javascript php jquery arrays explode


【解决方案1】:

$_POST['data'] 不存在你发送 'value' 参数,所以使用 $_POST['value']

【讨论】:

  • 这是不正确的。 $_POST['data'] 将包含在选择输入中选择的&lt;option&gt; 的值。您不能通过$_POST['value'] 访问它,而是通过&lt;select&gt; 标签的“名称”访问它(在本例中为$_POST['data']
  • 我现在无法测试这个,我一拿到我的电脑就会告诉你
【解决方案2】:

我对 javascript 并不太熟悉,所以我倾向于采用自己的方式来解决这个问题。也就是说,我认为这将完成您正在尝试做的事情(不需要您的代码靠近代码底部的脚本):

<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form action="richiesta.php" method = "post">
<label>Seleziona l'ente</label>
<select name="data" id="data" onchange = "this.form.submit()" >
    <option value="PRO - 011142764">COMUNE DI AGLIE'</option>
    <option value="PRO - 011120674">COMUNE DI AGRATE CONTURBIA</option>
</select>
<input type="text" name="textfield" id="textfield" onchange="this.form.submit()" />
</form>
</body>
</html>

请注意,如果选择更改或输入文本,这将导致表单提交。如果您想让某人有机会更改他们两个然后提交,您需要稍微更改一下(最好只添加一个提交按钮)。

然后,richiesta.php 可以简单地从$_POST['data'] 获取数据并从那里分解。

【讨论】:

  • 问题不在于 javascript 代码。事实上,输入标签只是为了测试用 javascript 发送的 POST 数据,并且它已正确填充。我认为,问题出在 richiesta.php 中,它要么没有“接收”POST 数据,要么没有正确输出它们。
  • 好吧,我还是不完全理解 javascript。我几乎只处理 html 和 php。但是,如果我只是查看您的 HTML 并忽略脚本,那么您的表单没有任何操作。这可能是问题所在,还是 javascript 会解决这个问题?我自己尝试了你的explode语句,它运行良好,所以我认为这与你在页面底部发送数据的脚本有关。
  • 但无论哪种方式,只需将 onchange="this.form.submit()" 添加到您的选择标签可能会解决您的问题...
猜你喜欢
  • 1970-01-01
  • 2015-06-25
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多