Hi我在php中有一个表单和一个函数,我想在表单sumbit后通过jquery调用它。这是我的尝试,但似乎不起作用!url必须是我的页面的完整url还是仅仅是我的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;
}
这是您更新的代码,它对我有效
<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;
}
?>
将您的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。相对URL将相对于包含执行AJAX调用的页面的目录进行解释,就像遵循链接一样。
$("#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的完整路径。它肯定会起作用。尝试