php - 使用 Jquery Ajax 从 PHP 获取 MYSQL 数据时出现 Parsererror

标签 php jquery mysql ajax

JQuery

function save() {

        imageData = $(".sigPad").signaturePad().getSignatureImage();
        consumeData = $('#consume').val();
        $.ajax({
                type: "POST",
                url: "",
                data: {'signatureasimage' : imageData, 'consume' : consumeData  },
                dataType: 'json',
                cache: false,
                success: function(response){
                    alert(response.msg);
                    /*var imageUrl = response['signature_image'];
                    d = new Date();
                    $(".signatureImage").attr("src",imageUrl);


                    if (response.status == true) {
                        window.location.href = "<?php echo ROOT_URL.'esignup/attendees_list.php?icode='.$icode;?>";
                    }*/
                },
                error: function(x,e){
                    if(x.status==0){
                        alert('You are offline!!\n Please Check Your Network.');
                    }else if(x.status==404){
                        alert('Requested URL not found.');
                    }else if(x.status==500){
                        alert('Internel Server Error.');
                    }else if(e=='parsererror'){
                        alert('Error.\nParsing JSON Request failed.');
                    }else if(e=='timeout'){
                        alert('Request Time out.');
                    }else {
                        alert('Unknow Error.\n'+x.responseText);
                    }
                }
            }); 

       };

PHP

$data = array();
    $confirmationData = array();
    $data['attendee_id'] = $attendeeId;
    $data['is_consume_the_provided_meal'] = $_POST['consume'];
    $data['signature_image'] = $destination;
    $data['confirmed'] = 1;
    if($confirmedAttendee){
        $sql = "SELECT * FROM  `".TBL_ATTENDEE_CONFIRMATION."`  WHERE `attendee_id` = '.$attendeeId.'";
        $confirmationData = selectFrom($sql);
        update_array('tbl_attendee_confirmation', $data, array('attendee_id' => $attendeeId));
        $confirmationData = selectFrom($sql);
    }else{
        var_dump("it went through insert array");
        insert_array('tbl_attendee_confirmation', $data);
    }

     $data = array();

    $data['msg']="Testing, testing.";

    echo json_encode($data);

Jquery ajax 确实使用数据 imageData 和 consumeData 发布请求。 imageData 和 consumeData 是字符串。复制到文件有效,数据更新表。问题是当我想获取 imageUrl 时出现 parsererror,因此我可以使用新的图像源更新 sigImage。我评论了用新的 imageURL 替换图像 src 的部分。有人知道这个问题吗?

错误在代码中显示为 "alert('Error.\nParsing JSON Request failed.');"。错误仍然出现在测试代码中。

最佳答案

尝试在您的 PHP 中这样做:

echo json_encode($data, JSON_FORCE_OBJECT);

我不完全理解它,但根据我的经验,如果你返回一个你在 PHP 中构建的数组,并使用 ECMAScript JSON 对象进行解析,你需要使用 JSON_FORCE_OBJECT 常量来确保它返回一个 JSON对象而不是 JSON 数组。

json_encode constants

关于php - 使用 Jquery Ajax 从 PHP 获取 MYSQL 数据时出现 Parsererror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24747835/

相关文章:

php - 为基于 Web 的应用程序实现自动提醒电子邮件功能

javascript - 不能跨域。 XMLHttpRequest 无法加载 localhost :portNo1 . Origin localhost:portNo2 不允许 Access-Control-Allow-Origin

javascript - 在移动设备上的页面滚动上删除bootstrap 4工具提示,并在点击切换图标时重新启用

php - 我的 PHP 代码中的参数有问题,参数未定义

php - Laravel 测试 dontSee 否定英文文本

javascript - 我想使用 PHP 在圆形位置显示记录

php - codeigniter jquery 动态数据

mysql - 我想将 AUTO_INCRMENT 更改为 UUID

php - Laravel orWhere 与相关表

PHP mysql插入日期格式