JQuery在提交问题上调用php函数


JQuery call a php function on submit issue

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的完整路径。它肯定会起作用。尝试