【问题标题】:Parsererror when Using Jquery Ajax To Get MYSQL Data From PHP使用 Jquery Ajax 从 PHP 获取 MYSQL 数据时出现解析器错误
【发布时间】:2014-07-14 23:50:11
【问题描述】:

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.');"。错误仍然显示在测试代码中。

【问题讨论】:

  • 您能否提供您收到的完整错误消息?
  • 只是为了澄清一下:success 是否正常运行,即使用 alert 命令,其余命令被注释掉,工作,当您取消注释行时它是否停止工作?并且是您的原始 php 代码,例如“echo json_encode($data)”(而不是 $return)。
  • @skarist 它仍然不适用于我提供的当前代码。是的,它 $return 以前是一个不同的变量。我将更改变量并检查它是否仍然不起作用。
  • 变量 $return 改成 $data 还是不行。
  • 如果您有权访问它,还请检查服务器上的 error_log。只是想知道您是否有包含 json 库的 php(json_encode)。在 php 5.2.x 之前默认是没有的(如果我没记错的话)

标签: php jquery mysql ajax


【解决方案1】:

尝试在您的 PHP 中执行此操作:

回显 json_encode($data, JSON_FORCE_OBJECT);

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

json_encode constants

【讨论】:

    【解决方案2】:

    您也可以在回显您的 JSON 编码数组之前尝试输出 JSON 的标头,请稍等。

    header('Content-Type: application/json');
    

    还有here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2012-10-13
      • 2012-01-26
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      相关资源
      最近更新 更多