【问题标题】:AJAX request issues with Firefox and IEFirefox 和 IE 的 AJAX 请求问题
【发布时间】:2016-08-09 23:23:17
【问题描述】:

我有一个复选框,每次更改复选框的状态(选中/未选中)时都会发送 AJAX 请求。我在 Chrome 中测试了所有内容,一切正常。

但是,当我使用 Firefox 或 IE 时,AJAX 请求不会更改 SQL 服务器中的值。我对它为什么不起作用感到有点困惑,而且我对 JS 和 JQuery 还很陌生,所以任何帮助都将不胜感激。

这是我使用 AJAX 调用 PHP 页面以更改复选框值的函数。

        //This function handles the clicking of checkboxes in the list
        //It sends an ajax POST message to a separate php file that handles the database updating
        function checkboxClicked(checkboxType, ticketNumber){
            $.ajax({
                type: "POST",
                url: 'updateCheckbox.php',
                dataType: 'json',
                async: 'true',
                data: {checkboxType: checkboxType, ticketNumber: ticketNumber},

                success: function(result, status){
                    if (status == "success"){
                        console.log("Status: " + status + ", Result: " + result);
                    }
                }
            });

            if(checkboxType == "Received"){
                window.location.reload();
            }
        }

这是 PHP 中显示复选框状态的行:

<?php
                        //This loop populates the ticket display using the records in the database
                        while($recordSet->EOF == false){
                            $ticketNumber = $recordSet->Fields['TicketNumber'];
                            $dateSubmitted = $recordSet->Fields['DateSubmitted'];
                            $department = $recordSet->Fields['Department'];
                            $courseNo = $recordSet->Fields['CourseNumber'];
                            $instructorName = $recordSet->Fields['InstructorName'];
                            $received = ($recordSet->Fields['Received']) ? "checked" : "unchecked";
                            $sendReminder = ($recordSet->Fields['SendReminder']) ? "checked" : "unchecked";
                            $email = $recordSet->Fields['Email'];
                            $CC = $recordSet->Fields['CC'];


                            $strHTML  = "<tr><td>$dateSubmitted</td>\n";
                            $strHTML .= "<td>$department</td>\n";
                            $strHTML .= "<td>$courseNo</td>\n";
                            $strHTML .= "<td style='word-break: break-all'>$instructorName</td>\n";
                            $strHTML .= "<td align='center'> <input type='checkbox' id='received' ".$received." class='receivedCheckbox' onclick='checkboxClicked(\"Received\", ".$ticketNumber.")'/></td>\n";
                            $strHTML .= "<td align='center'> <input type='checkbox' id='sendReminder' ".$sendReminder." class='sendReminderCheckbox' onchange='checkboxClicked(\"SendReminder\", ".$ticketNumber.")' data-email='".$email."'/></td>\n";
                            $strHTML .= "<td style='word-break: break-all;' align='center'> <a id='checkReceived' href='#' onClick='checkReceived(\"$received\", \"$email\")'>".$email."</a></td>";
                            $strHTML .= "<td align='center'> <button onclick=\"window.open('urlhere', '_self')\">Edit</button>\n";
                            $strHTML .= "<td align='center'> <button onclick=\"window.open('urlhere')\">Print</button> </td>\n";
                            $strHTML .= "</tr>\n";

                            echo $strHTML;
                            $recordSet->MoveNext;
                        }
                    ?>

如果你们需要更多信息,请告诉我。 谢谢!

【问题讨论】:

  • 检查控制台是否有任何错误
  • 检查控制台,没有错误。
  • 你是如何触发 checkboxClicked 功能的?
  • 通过重新加载页面,您取消了当前正在运行的请求。跨浏览器的处理方式可能会有所不同。所以至少试试:$.ajax({...}).always(function(){if(checkboxType == "Received"){ window.location.reload(); }});。仅供参考,async: 'true', 应该是 async: true, 或者只是省略它,但这与您的问题无关
  • 复选框的点击事件。

标签: javascript php jquery ajax checkbox


【解决方案1】:

也许你应该试试:

 $received = ($recordSet->Fields['Received']) ? "checked='checked' " : "checked='' ";
 $sendReminder = ($recordSet->Fields['SendReminder']) ? "checked='checked' " : "checked='' ";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-20
    • 2018-07-09
    • 2015-03-17
    • 2011-05-01
    • 2014-11-25
    • 2015-10-07
    • 2018-01-30
    • 1970-01-01
    相关资源
    最近更新 更多