背景信息。我使用的是Spectrum.js http:/bgrins.github.iospectrum)。 的颜色选择器。为了在表单中使用它,它被设置为输入类型的文本。在表单中使用这个颜色传递给一个php解析器,然后将数值传递给一个.pov povray文件,然后在unix盒子上渲染。
我试图将这个颜色选择器的值传递到下一个php页面。我花了几个小时试图找到一个解决方案,但一无所获。
奇怪的是,我把值 "提醒 "到我的tester_done.php页面,我可以在提醒中看到正确的值。当我把按钮作为一个按钮的时候,这个功能是有效的。当我把按钮类型改为提交时,它就不再工作了。我想看到颜色选择器的值,当我点击提交。任何帮助都是非常感激的,因为我的头发都快掉光了。我只是想让tester.php中的值发布到tester_done.php中,我不知道为什么它不能工作,当我让它提醒时,我得到了正确的值,但当我试图改变按钮提交时,我得到的是rgb<0,0,0>。
tester.php的代码:
<form action="tester_done.php" method="post">
<input type='text' class = "basic" name ="field1" id = "field1"/>
<input type='text' class = "basic2" name ="field2" id = "field2"/>
<input type="button" value="Submit" id="send">
</form>
<script type="text/javascript">
$(".basic").spectrum({
preferredFormat: "rgb",
color: "#ffcccc"
});
$(".basic2").spectrum({
preferredFormat: "rgb",
color: "#ff0"
});
jQuery(function(){
var field1 = $('#field1');
var field2 = $('#field2');
$('#send').click(function(){
jQuery.ajax({
type: "POST",
url: "tester_done.php",
data: {field1value: field1.val(), field2value: field2.val()},
dataType: "html",
success: function(data){
alert(data);
}
});
});
});
</script>
tester_done.php的代码:
<?php
$base_value=255;
$characters = array("(", "r", "g", "b", ")");
$field1value = isset($_POST['field1value'])? $_POST['field1value'] : '';
$nfield1value = str_replace($characters, "", $field1value);
$nsfield1value = $nfield1value;
$nsf1arr = array_map("intval", explode(", ", $nsfield1value));
$c_body_r = $nsf1arr[0] / $base_value;
$c_body_r_round = round ($c_body_r, 6);
$c_body_g = $nsf1arr[1] / $base_value;
$c_body_g_round = round ($c_body_g, 6);
$c_body_b = $nsf1arr[2] / $base_value;
$c_body_b_round = round ($c_body_b, 6);
$c_body = "rgb<".$c_body_r_round.", ".$c_body_g_round.", ".$c_body_b_round.">";
echo $c_body;
$field2value = isset($_POST['field2value'])? $_POST['field2value'] : '';
$nfield2value = str_replace($characters, "", $field2value);
$nsfield2value = $nfield2value;
$nsf2arr = array_map("intval", explode(", ", $nsfield2value));
$c_top_r = $nsf2arr[0] / $base_value;
$c_top_r_round = round ($c_top_r, 6);
$c_top_g = $nsf2arr[1] / $base_value;
$c_top_g_round = round ($c_top_g, 6);
$c_top_b = $nsf2arr[2] / $base_value;
$c_top_b_round = round ($c_top_b, 6);
$c_top = "rgb<".$c_top_r_round.", ".$c_top_g_round.", ".$c_top_b_round.">";
echo $c_top;
?>
你不需要JQuery! "< form action="tester_done.php" method="post">" 照顾发布数据包含在 输入 的标签。形成.
但是,如果你想要一个ajax的响应,我建议你去掉你的 行动 属性,并使用 .serializeArray() 的数据字段中,将数据传递给你的$.ajax调用。形成 作为url参数。
可能的用法。 给定表单id="NewForm",$.ajax({type: "POST", url: "tester_done.php", data: $('#NewForm').serializeArray(),dataType.'html',success: function(data){alert(data);}});;。'html',success: function(data){alert(data);}});
注意:传递的参数名称与html表格中的输入标签名称相同。 传递的参数名称与html表单中的输入标签名称相同,例如对于field1输入,在tester_done.php中的$_POST['field1'],当使用此方法时。
你可以使用 submit
也是。
$('form').submit(function(){
jQuery.ajax({
type: "POST",
url: "tester_done.php",
data: {field1value: field1.val(), field2value: field2.val()},
dataType: "html",
success: function(data){
alert(data);
}
});
});
你也可以像以前一样把按钮做成一个简单的按钮(不是提交),然后用JavaScript提交表格。
$('#send').click(function(){
jQuery.ajax({
type: "POST",
url: "tester_done.php",
data: {field1value: field1.val(), field2value: field2.val()},
dataType: "html",
success: function(data){
alert(data);
}
});
$('form').submit();
});