背景信息:我使用Spectrum.js http://bgrins.github.io/spectrum/作为颜色选择器。要在表单中使用它,它将被设置为输入类型文本。这在表单中用于将颜色传递给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;
?>
答案 0 :(得分:0)
您也可以使用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();
});
答案 1 :(得分:0)
你不需要JQuery! &#34;&LT; form action =&#34; tester_done.php&#34;方法=&#34;后&#34;&GT;&#34;负责发布表单的输入标记中包含的数据。
但是,如果您想要ajax响应,我建议删除 操作 属性,并使用 .serializeArray()你的$ .ajax调用的数据字段中的em> 将表单中的数据作为url参数传递。
可能的用法:鉴于表单id =&#34; NewForm&#34;,$ .ajax({type:&#34; POST&#34;, url:&#34; tester_done.php&#34;, 数据:$(&#39;#NewForm&#39;)。serializeArray() ,dataType:&#39; html&#39;,成功:功能(数据) {警报(数据);}});
注意: 传递的参数名称与html表单中输入标记的名称相同,即对于field1输入,$ _POST [&#39 ; field1&#39;]在tester_done.php中,使用此方法时。