簡體   English   中英

無法調用ajax函數

[英]Unable to call ajax function

當我點擊提交按鈕時,我在調用我的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將接收表單數據並將其插入數據庫。 由於這是不起作用的部分,您應該在問題中顯示該代碼。

通常,數據以text / html格式發送到PHP處理器文件,而不是任何類型的對象。 因此,應該可以alert(FormData)並查看您要發送給sponsorItem.php的字符串。 我認為你不能這樣做。

查看這三個簡單的AJAX示例並了解如何更改代碼可能非常有用。

使用ajax獲取內容並直接顯示它們而不刷新頁面

首先, 手動獲取表單數據值(例如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正在工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM