繁体   English   中英

jQuery提交PHP未执行

[英]JQuery to submit PHP not executing

经过数小时的研究,让我惊讶的是我的JQuery根本没有执行。

我有一个页面要在不刷新/离开页面的情况下提交给PHP脚本。 如果我使用典型的表单操作/方法/提交,它将很好地插入到我的数据库中。 但是当我使用JQuery时,JQuery根本不会运行。 警报不显示。 (我是JQuery的新手)。 我试图对此进行研究,但没有任何效果。

这是我的主页:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
    $(document).ready(function(e) {
       $('submitpicks').on('submit','#submitpicks',function(e){
            e.preventDefault();  //this will prevent reloading page
            alert('Form submitted Without Reloading');
       });
    });

</script>
</head>

<body>
<form name="submitpicks" id="submitpicks" action="" method="post">
<script language="javascript">
var v=0;
function acceptpick(thepick,removepick){
    var userPick = confirm("You picked " + thepick + ". Accept this pick?");
    //var theid = "finalpick" + v;
    var removebtn = "btn" + removepick;
    //alert(theid);
    if(userPick==1){
        document.getElementById("finalpick").value=removepick;
        document.getElementById(removebtn).disabled = true;
        document.getElementById("submitpicks").submit();
        v=v+1;
    }
}
</script>
<?php
include "Connections/myconn.php";
//$setid = $_SESSION["gbsid"];
$setid = 11;
$setqry = "Select * from grabBagParticipants where gbsid = $setid order by rand()";
$setresult = mysqli_query($conn, $setqry);
$u=0;
if(mysqli_num_rows($setresult)>0){
    while($setrow = mysqli_fetch_array($setresult)){
        //shuffle($setrow);
        echo '<input type="button" name="' . $setrow["gbpid"] . '" id="btn' . $setrow["gbpid"] . '" value="' . $u . '" onClick=\'acceptpick("' . $setrow["gbpname"] . '", ' . $setrow["gbpid"] . ');\' /><br />';
        $u=$u+1;
    }
}
?>
<input type="text" name="finalpick" id="finalpick" />
<input type="submit" value="Save" />
</form>
<div id="results">&nbsp;</div>
</body>
</html>

这是我的PHP:

<?php
include "Connections/myconn.php";
$theGiver = 1;
$theReceiver = $_POST['finalpick'];
$insertsql = "insert into grabBagFinalList(gbflgid, gbflrid) values($theGiver, $theReceiver)";
mysqli_query($conn, $insertsql);
?>

在此处输入图片说明

您可以使用e.preventDefault(); return false;

<script>
$(document).ready(function(e) {
   $('#submitpicks').on('submit',function(e){
        e.preventDefault();
        $.post('submitpick.php', $(this).serialize(), function(data) {
            $('#results').html(data);
        });
        // return false;
    });

});

</script>

注意:在您的php中,您不会回显任何内容以将其作为数据恢复。.因此,当您尝试使用$ .post或$ .get或$ .ajax ..检查js与php之间的连接时,具有一些基本知识。所以在PHP

<?php
    echo 'File connected';
?>

然后在js中alert(data) ..如果一切正常..转到下一步

解释每个步骤。

一切之前,应检查您是否安装了jquery(如果使用)

<script type="text/javascript" src="jquery-1.11.3.min.js"></script>

从w3schools网站..它完全错误..您应该寻找如何安装jquery ...然后

1st用js提交表单并防止重新加载..并且您在主页中使用了<script>

<script>
    $(document).ready(function(e) {
       $('#submitpicks').on('submit',function(e){
            e.preventDefault();  //this will prevent reloading page
            alert('Form submitted Without Reloading');
       });
    });
<script>

输出:警报,无需重新加载就提交了表单...如果此步骤很好,您会收到警报..转到下一步

第二添加$ .post到您的代码

<script>
        $(document).ready(function(e) {
           $('#submitpicks').on('submit',function(e){
                e.preventDefault();  //this will prevent reloading page
                $.post('submitpick.php', $(this).serialize(), function(data){
                     alert(data);
                 });
           });
        });
    <script>

并在Submitpick.php >>>中确保您的mainpage.php和Submitpick.php在同一目录中

<?php
    echo 'File connected';
?>

输出:连接文件时发出警报

您是否听说过AJAX(异步javascript和XML)。 对于刚接触JQuery和javascript的人来说,学习它可能并不容易,但是它确实满足了您的需求。 嗯,它比这复杂一些,但是基本上AJAX通过使用HTTP请求(与正常形式非常相似)提交信息,而无需刷新页面。

这是教程的链接: http : //www.w3schools.com/ajax/(带有香草javascript)。

这是一个使用Jquery的网站: http : //www.w3schools.com/jquery/jquery_ajax_intro.asp

这是一个如何使用Jquery进行设置的示例:

$(document).ready(function() {
     $.ajax({
        method: "POST",
        url: "/something.php"
        dataType: "JSON",
        data: {formData:{formfield1: $('formfield1').val(), formfield2: $('formfield2)'.val()}},
        success: function(data){
            if (data["somevalue"]) == something {
                dosomething;
            } else {
                dosomethingelse
        },
        error: function() {
            alert("Error message");
        }
     });

});

这只是一个基本示例,现在所有这些东西到底意味着什么。 嗯,有几种方法,其中一些是POST和GET,这些是HTTP请求方法,您可以使用它们来完成几件事。 我不是这方面的专家,但是这是他们的工作:

方法

开机自检

POST基本上可以将信息提交给服务器,然后通常将其插入到该服务器所连接的数据库中。 我相信大多数表单都使用POST请求,但请不要在此引用我的名字。

得到

另一方面,GET从服务器请求数据,然后服务器将其提取到数据库中并将其发送回客户端,以便它可以执行操作。 例如,无论何时加载页面,都会发出GET请求以加载页面的各个元素。 这里要注意的重要一点是,此请求专门用于检索数据。

您还可以使用其他类型的HTTP请求,例如PUT和DELETE,与GET和POST一起使用最常见。 无论如何,我建议您查找它们,它是有用的信息。

网址

该url表示您向其发出请求的路径,我不确定它如何与PHP一起使用,我认为您只需要调用有问题的PHP页面即可正常工作,但是我不确定,从上学期开始,我就没有使用过PHP,一直在使用Rails,但效果却不太一样。 无论如何,可以说您有一个名为“ Something.php”的PHP页面,并且可以说某某PHP具有以下内容:

<?php
   $form_data = $_POST['data'];
   $array = json_decode(form_data, true);
    do something with your data;
    $jsonToSendBack = "{status: 1}";
    $response = json_encode($jsonToSendBack);
    echo $response;
 ?>

因此,基本上该文件收到的是一个JSON,它是我们指定的数据类型,并且在我们完成对服务器中数据的解释之后,我们通过echo echo发送回了响应。 现在,由于我们的数据类型是JSON,因此客户端期望使用JSON进行响应,但是稍后我们将进行介绍。 如果您不熟悉JSON,则应查找它,但简单来说,JSON是一种数据交换格式,不同的语言可以利用该格式将数据彼此传递,例如在本示例中,我通过Javascript将数据发送到PHP反之亦然。

数据类型

数据类型基本上是您要发送到服务器的信息类型,您可以通过ajax指定它。 您可以发送和接收许多数据类型,例如,如果需要,可以将XML或文本发送到服务器,然后根据选择的内容,它应返回XML或文本。

成功和错误最后,有成功和错误参数,基本上,如果请求成功,它会返回状态码200,尽管这并不意味着其他状态码也不能表示成功,但是200可能是您所需要的状态码。希望在发出HTTP请求时看到。 无论如何,成功基本上指定如果请求成功,则应执行我编写的功能代码,否则,如果出现错误,它将在错误范围内执行该功能。 最后,即使您的请求确实成功,也不意味着一切都顺利,这仅意味着客户端已成功联系服务器并且收到了响应。 一个请求可能成功了,但这通常并不意味着您的服务器端代码可以完美地执行所有操作。

无论如何,我希望我的解释足够,您可以从这里进行解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM