javascript - 无法调用ajax函数

标签 javascript php jquery mysql ajax

当我单击提交按钮时,我在调用 ajax 函数时遇到了一些困难。当我尝试使用其他形式对 ajax 函数进行故障排除时,它运行良好,但是当我尝试使用想要将数据插入数据库的实际代码时,ajax 函数无法被调用。为了让它发挥作用,我需要改变什么?请指导我,谢谢。

这是我的sponsor.php 示例:

//File and text upload with formDATA function
                $("form#form").submit(function(){
                var formData = new FormData($(this)[0]);    
                    $.ajax({
                        url:'sponsorItem.php',
                        type: 'POST',
                        data: formData,
                        async: false,
                        beforeSend: function(){
                         if(confirm('Are you sure?'))
                              return true;
                          else
                              return false;
                        },
                        cache: false,
                        contentType: false,
                        processData: false
                    }).done(function () {
                            //do something if you want when the post is successfully
                            if(!alert('Banner Had Successfully Updated.')){document.getelementbyclassname('form').reset()}
                        });
                    return false;

            });

这里是 getSponsorForm.php,它从 ajax 获取项目 id,然后将值传递给它以调用表单。

这是将变量传递给 getSponsorForm.php 的函数:

<!-- Ajax show form function-->
<script>
function showSponsor(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","getSponsorForm.php?sponsor="+str,true);
        xmlhttp.send();
    }
}
</script>

这是 getSponsorForm.php :

<!DOCTYPE html>
<html>
<head>
</head>
<body>

<?php
$q = intval($_GET['sponsor']);

include 'dbConnection.php';

global $dbLink;


$query="SELECT * FROM sponsor_item WHERE sponsor_item_id = '".$q."'";
$result = $dbLink->query($query);



// Numeric array
while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)){

echo '<!--Banner Item No 1 Start-->
                            <div class="box box-primary1">
                                <div class="box-header">
                                    <h3 class="box-title">Edit Sponsor No.'.$row["sponsor_item_id"].' <small>编辑器</small></h3>
                                </div>
                                <div class="box-body">
                                <form class="form" id="form" action="" method="POST" enctype="multipart/form-data">
                                    <div class="box-body">
                                        <input type="hidden" name="sponsor_id" value="'.$row["sponsor_item_id"].'"></input>
                                        <div class="form-group" >
                                            <label for="sponsorTitle">Sponsor Title 赞助称号</label>
                                            <input type="text" class="form-control" name="sponsorTitle" id="sponsorTitle" placeholder="Please Enter Name" onChange="checkDisabled(testing);">
                                        </div>
                                        <div class="form-group" >
                                            <label for="sponsorDescription">Sponsor Description 赞助描述</label>
                                            <input type="text" class="form-control" name="sponsorDescription" id="sponsorDescription" placeholder="Please Enter Name" onChange="checkDisabled(testing);">
                                        </div>
                                         <div class="form-group">
                                            <label for="exampleInputFile">File input</label>
                                            <input type="file" id="uploaded_file" name="uploaded_file"  onChange="checkDisabled(testing);"><br>
                                            <p class="help-block">Your picture size not more than 2MB.  (Only JPEG or JPG is allowed)</p>
                                        </div>  

                                        <div class="checkbox">

                                            <button id="testing" type="submit" class="btn btn-primary" disabled>Update</button>      
                                        </div>
                                    </div><!-- /.box-body -->


                                </form>                  <!-- Date range -->
                                    <!-- /.form group -->

                                    <!-- Date and time range -->




                                    <!-- /.form group -->

                                    <!-- Date and time range -->
                                    <!-- /.form group -->

                                </div><!-- /.box-body -->
                            </div><!-- /.box -->
                            <!--Banner Item No 1 End-->';

}       
mysqli_free_result($result);                            
// Close the mysql connection
$dbLink->close();
?>
</body>
</html>

我不知道为什么我点击提交按钮,它只是不会调用sponsorItem.php中的函数并将数据插入数据库。

仅供引用:我尝试将表单的 getSponsorForm.php 代码放入 Sponsor.php 中,然后当我单击“提交”按钮时,它就可以工作。但我在 getSponsorForm.php 中分离出了表单函数,那么它就不起作用了。有什么线索吗?

最佳答案

如果您手动从表单字段获取值,然后构造一个数据字符串发送到 PHP 处理器文件 sponsorItem.php

,您可能会取得更好的成功

请注意,根据您的代码,sponsorItem.php 将接收表单数据并将其插入数据库。由于这是不起作用的部分,您应该在问题中显示该代码。

通常,数据以文本/html 格式发送到 PHP 处理器文件,而不是作为任何类型的对象。因此,应该可以 alert(FormData) 并查看您发送到 sponsorItem.php 的字符串。我认为你做不到。

查看这三个简单的 AJAX 示例并了解如何更改代码可能会对您非常有帮助。

get contents with ajax and display them directly without refreshing the page

一方面,手动获取表单数据值(例如 var userName = $('#username').val(); 而不是尝试通配所有内容一次性、自动完成。既然你在学习,就应该追求控制,而不是自动化。

<小时/>

既然 sponsorItem.php 正在工作,那么您想看看您的 AJAX 代码块是否正在工作。

暂时将 sponsorItem.php 的内容替换为以下两行:

<?php
echo 'Got to sponsorItem page';

现在,像这样更改您的 AJAX 代码块:

}).done(function (data) {
    alert( data );
});

data 表示从 sponsorItem.php 回显的任何数据 - 因此它应该提醒 Got to SponsorItem page

当它起作用时,您就会知道您的 AJAX 正在起作用。

关于javascript - 无法调用ajax函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28823924/

相关文章:

javascript - 使用jquery在php中10秒后自动点击提交

jquery - 如果元素已存在,则使函数返回 false

javascript - 如何使用javascript使用onclick事件获取单元格的坐标

javascript - 通过 JavaScript 加载 iOS 'smart app banner'

php - 检查了 php.ini 文件 "extension=php_pdo_mysql.dll"启用但仍然错误

PHP - 扩展的 __construct

php - Laravel存储链接不适用于生产

javascript - 网站菜单栏下拉

javascript - WebGL 错误 - 错误 : WebGL: bindBuffer: buffer already contains element data

javascript - 通过单击动态更改 li 选择