嗨我有一个php中的表单和一个函数,我希望通过jquery调用一次该表单是sumbit。这是我的尝试,但它似乎没有工作!该网址必须是我的网页的完整网址或只是我的PHP脚本名称?我还需要将函数附加到该URL的末尾,以便jquery调用并从表单中发送该函数的提交值吗?
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function() {
$("#search_box").submit(function() {
dataform = $("#search").val();
$.ajax({
type: "POST",
url: "tree2.php",
data: dataform,
success: function() {
alert('success!');
$('#search_box').fadeOut(100).hide();
}
})
});
});
</script>
</head>
<?php
form();
if($_POST['submit'])
process();
function form(){
echo"<div class='searchbox'>";
echo "<form method='post' id='search_box' action='$_SERVER[PHP_SELF]'>";
echo "<input type='text' id='search' name='species'/>";
echo "<input type='submit' name='submit' />";
echo "</form>";
echo "</div>";
}
function process(){
$searchvar = htmlentities($_POST['species']);
echo $searchvar;
}
答案 0 :(得分:0)
将您的Javascript更改为:
$(document).ready( function() {
$("#submit").click(function() {
// Get all the post parameters
dataform = { submit: 1,
species: $("#search").val()
};
$.ajax({
type: "POST",
url: "", // Post to the current page
data: dataform,
success: function(result) {
alert('success! ' + result); // Do something with result
$('#search_box').fadeOut(100).hide();
}
});
return false; // Prevent default submission
});
});
您没有在数据中提供字段名称,而且您根本没有提供submit
字段,因此if ($_POST['submit'])
永远不会成为现实。
将PHP更改为:
if ($_POST['submit']) {
process();
} else {
form();
}
这将在正常加载页面时显示表单,但在设置submit
字段时处理AJAX查询。
您无需提供绝对网址。相对URL将相对于包含执行AJAX调用的页面的目录进行解释,就像跟随链接一样。
答案 1 :(得分:0)
这是您的更新代码,它适用于我
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function() {
$("#submit").click(function() {
dataform = $("#search").val();
$.ajax({
type: "POST",
url: "tree2.php",
data: dataform,
success: function() {
alert('success!');
$('#search_box').fadeOut(100).hide();
}
})
});
});
</script>
</head>
<?php
form();
if($_POST['submit'])
process();
function form(){
echo"<div class='searchbox'>";
echo "<form method='post' id='search_box' action='$_SERVER[PHP_SELF]'>";
echo "<input type='text' id='search' name='species'/>";
echo "<input type='button' name='submit' id='submit' value ='submit'/>";
echo "</form>";
echo "</div>";
}
function process(){
$searchvar = htmlentities($_POST['species']);
echo $searchvar;
}
?>
答案 2 :(得分:0)
$("#search_box").submit(function() {
$.ajax({
type: "POST",
url: "http://www.hostname.com/tree2.php",
data: $('#search_box').serialize(),
success: function() {
alert('success!');
$('#search_box').fadeOut(100).hide();
}
})
});
您必须使用serialize()发送数据,并且您将能够以正常方式在tree.php服务器页面中接收数据。当我们从表单收到POST数据时。其次使用tree.php的完整路径。它肯定会有效。试试。