0

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

3 回答 3

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。相对 URL 将被解释为相对于包含执行 AJAX 调用的页面的目录,就像跟随链接一样。

于 2013-07-30T04:15:55.083 回答
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的完整路径。它肯定会起作用。试试。

于 2013-07-30T04:56:47.377 回答
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;
 }
?>
于 2013-07-30T04:25:02.167 回答