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

时间:2013-07-30 04:11:58

标签: php jquery

嗨我有一个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;
 }

3 个答案:

答案 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的完整路径。它肯定会有效。试试。