首页 > 解决方案 > JS 函数中的 JQuery ajax 调用在 iOS 上失败,但在 Windows 10 pc 上运行良好

问题描述

在这件事上绞尽脑汁——我想我会向专家寻求帮助......我下面代码的要点是调用一个 php 函数(通过 ajax POST),它在注册请求时更新 MySQL 表被管理员拒绝。

在 Windows 10 中执行时,一切都按预期工作。alert("A problem has occurred with your rejection at tec_regadmin. " + teststat2 + " Please copy this error and contact your abc administrator for details.");但在 iOS 上,它会抛出在 ajax 调用 ( )的 .fail 函数中发现的错误警报。此外,teststat2 在 iOS 上显示为 [object Object]。另一个转折 - MySQL 表成功更新以显示请求被拒绝。代码片段如下:

带有对 ../services/ajax_reject_registrant.php 的嵌入式 ajax 调用的 JS 函数:

    function regreject(Select, Directory_ID, Log_In, Gender_sex, First_Name, Last_Name) {
        console.log("Made it into the regreject function");
        var jQ13 = jQuery.noConflict();
        jQ13(document).ready(function () {
        jQ13.ajax({
            cache: false,
            headers: { "cache-control": "no-cache" },
            url: '../services/ajax_reject_registrant.php',
            type: 'POST',
            dataType: 'json',
            data: { Selected: Select, Directory: Directory_ID, Login: Log_In, Gender: Gender_sex, FirstName: First_Name, LastName: Last_Name }
        })
            .done(function (jqXHR, textStatus) {
                //  Get the result
                var teststat = textStatus;
                var teststat2 = jqXHR;
                console.log("ajax reject success response data = " + teststat);
                console.log("ajax reject success response text = " + teststat2);
                alert("Registrant has been disabled in the database.");
                location.reload();
                return;
            })
            .fail(function (jqXHR, textStatus) {
                //  Get the result
                var teststat = textStatus;
                var teststat2 = jqXHR;
                console.log("ajax reject failure response data = " + teststat);
                console.log("ajax reject failure response text = " + teststat2);
                alert("A problem has occurred with your rejection at tec_regadmin. " + teststat2 + " Please copy this error and contact your abc administrator for details.");
                location.reload();
                return;
            });
        });
    };

从 ajax 调用的 PHP 脚本 (../services/ajax_reject_registrant.php):

<?php
//New Registrant Reject script
//Called from tec_regadmin.php
//Last Updated 2020/12/09
if ( isset($_POST['Selected']) ) {
    require('../tec_dbconnect.php');
    include('../includes/event_logs_update.php');
    include('tec_sendmail.php');
    $Selected2 = $_POST['Selected'];
    $Directory2 = $_POST['Directory'];
    $Login2 = $_POST['Login'];
    $Gender2 = $_POST['Gender'];
    $FirstName2 = $_POST['FirstName'];
    $LastName2 = $_POST['LastName'];
    $text = array();
    $regrejectloginquery = "UPDATE " . $_SESSION['logintablename'] . " SET active = '2'" .  " WHERE login_ID = '". $Login2 . "'";
    $regrejectlogin = $mysql->query($regrejectloginquery) or die("A database error occurred when trying to reject new Registrant info into Login table. See ajax_reject_registrant.php. Error:" . $mysql->errno . " : " . $mysql->error);
    eventLogUpdate('admin_update', "Admin ID: " .  $_SESSION['user_id'], "Registrant Reject", "LoginID: " . $Login2 . " - Directory entry: " . $Directory2);

    $success = 'Reject Success';
    header('Content-type: application/json');
    echo json_encode($success);
}
else{
    $failed = 'Reject Failed';
    header('Content-type: application/json');
    echo json_encode($failed);
}
?>

如果您有任何问题,请告诉我。任何建议都会很棒!谢谢!!!

标签: iosajax

解决方案


[解决了]

PHP 表单用于调用上述函数 (rereject),但缺少一个操作语句(显示为action='')。通过修改操作以包含javascript:void(0); 问题自行解决。我需要做的就是将操作更改为action="javascript:void(0);"原始 PHP 表单,现在 iOS 是一个快乐的露营者!

我必须思考的最后一个问题是“为什么这是 iOS 的问题??” 想知道我是否会发现。


推荐阅读