xferring javascript 变量以发布变量的实际代码

Posted

技术标签:

【中文标题】xferring javascript 变量以发布变量的实际代码【英文标题】:actual code for xferring javascript variable to post variable 【发布时间】:2017-10-22 16:19:49 【问题描述】:

我已经看这个网站三天了。我承认我是使用 javascript 的新手。但是我使用了提供的许多不同的解决方案,但都没有奏效。请帮忙。

我正在尝试做一些简单的事情:将用户选择的国家/地区从 html5 页面上的下拉框中保存到隐藏的帖子变量(使用 javascript onchange。)在同一表单上的帖子数组中使用对于将输入发送到 mysql 数据库的 php 操作。这是我的代码:

隐藏的帖子变量不会更新。从那里我无法测试代码逻辑。但是我的 onchange 代码来自这个站点,并且应该可以工作。

参考资料:

<script type="text/javascript"  src="../../js/jquery-2.1.4.min_prod.js"> </script>
<script type="text/javascript"  src="../../js/respond.min.js"> </script>
<script type="text/javascript"  src="../../js/bootstrap.min.js"> </script>

表格信息:

<form name="form1"  method="post" enctype="multipart/form-data"  action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" />
</form>

表单元素

$query="SELECT * from  country ";
$query=$query."ORDER BY country asc";
$data = mysqli_query($conn,$query);
//or die('could not connect to db:'. mysqli_connect_error() );
mysqli_error($conn);
If ($data) 
echo '<select id="country"  onchange="send_name(this)">';
echo '<option value="204">United States</option>';
while ($row = mysqli_fetch_array($data)) 
echo '<option  value="'.$row['country_id'].'">'.$row['country'].'</option>';
//while
echo '</select>';
//if
mysqli_close($conn);
?>
<input type="hidden" id="c_php_value" name="c_php_value" value="">

Javascript

function send_name(selectObjectI) 
        var value = selectObjectI.value;
        $.ajax(
            type: "POST",
            url: "http://localhost/php/protected/form_addnews.php",
            data:c_php_value: value

        );

发布提交代码

$country_id1 = trim($_POST['c_php_value']);

【问题讨论】:

您永远不会更改或读取隐藏字段的值 - 您希望它做什么?您也不能使用 $_POST 中的值,因为您没有发送 JSON 值作为 POST 中键的值。是否有任何理由为什么它应该是 JSON,而不仅仅是常规 POST? 这句话不是应该这样做吗? $.post("form_addnews.php", JSON.stringify(c_php_value: value)); 好的。我从我的 javascript 调试中看到 [谢谢,utube] 我的 onchange 正在工作。就像他上面所说的那样,该值不会转移到隐藏的帖子对象中。但是如果 json 语句不这样做,那又会怎样呢?谢谢 我发现我的 json 语句中缺少双引号。它应该是“c_php_value”。显然这是非常重要的。 【参考方案1】:

感谢 utube 上的编码员,我可能会说德语,我发现我不需要 javascript、ajax 或任何复杂的东西来完成我想做的事情。

我只需要执行以下操作:

(1) 在动态创建的 SELECT 标志(name="country_id2") 中添加一个 name=""。

(2) 用户选择输入并创建下拉框。

(3) 设置表单提交后收集 $_POST。 ($country_id = $_POST['country_id2'])

$data = mysqli_query($conn,$query);
//or die('could not connect to db:'. mysqli_connect_error() );
mysqli_error($conn);
If ($data) 
    echo '<select name="country_id2" id="country_id2">';
    echo '<option value="204">United States</option>';
    while ($row = mysqli_fetch_array($data)) 
       echo '<option     value="'.$row['country_id'].'">'.$row['country'].'</option>';
    //while
    echo '</select>';
//if
mysqli_close($conn);

【讨论】:

以上是关于xferring javascript 变量以发布变量的实际代码的主要内容,如果未能解决你的问题,请参考以下文章

lftp下载文件无法覆盖,提示" file already existst and xfer:clobber is unset" 问题解决

需要存储 JavaScript 变量以在其他页面上使用?

Javascript / Jquery 将变量拆分为两个以进行条带集成

Qualtrics:使用javascript转换管道变量并以文本显示?

Javascript - 将一个大对象分配(而不是克隆)一个新变量以减少其名称

为啥 Chrome 和 Firefox 以不同方式处理 jQuery ajax() 回调中设置的 javascript 变量?