2014-07-14 52 views
1

JQuery的Parsererror使用jQuery Ajax獲得MySQL的數據從PHP

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的阿賈克斯確實有數據的imageData和consumeData POST請求。 imageData和consumeData是字符串。複製到文件的工作和數據更新表。問題是當我想要獲取imageUrl時,我得到了parsererror,所以我可以用新的圖像源更新sigImage。我評論了我用新的imageURL替換圖像src的部分。有誰知道這個問題?

錯誤代碼顯示爲"alert('Error.\nParsing JSON Request failed.');"。錯誤仍然顯示與測試代碼。

+0

能否請您提供您收到完整的錯誤信息? –

+0

只是澄清一下:成功的功能是否與現在一樣,即警告命令和其餘註釋,工作,並且當您取消註釋行時停止工作?並且是您的原始php代碼,如「echo json_encode($ data)」(而不是$ return)。 – skarist

+0

@skarist它仍然不適用於我提供的當前代碼。是的,它之前的$回報是一個不同的變量。我會更改變量並檢查它是否仍然無效。 – diboy2

回答

0

嘗試在你的PHP這樣做:

回聲json_encode($的數據,JSON_FORCE_OBJECT);

我不完全理解它,但根據我的經驗,如果您要返回使用ECMAScript JSON對象解析的PHP內置數組,則需要使用JSON_FORCE_OBJECT常量以確保它返回一個JSON對象而不是JSON數組。

json_encode constants

0

您也可以嘗試呼應的JSON編碼陣列之前輸出爲JSON的頭,給我一秒鐘。

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

而且here