2017-04-16 26 views
0

このphpファイルは、ユーザーが電子メールで送信したIDとコードを確認します。 IDとコードが一致すると、確認メッセージが表示されます。そうでない場合は、エラーメッセージが表示されます。スクリプトはjsonに変換され、変換されたjsonを解析中にエラーが返されます。PHP jsonエンコード解析エラー

最後に、成功またはエラーメッセージのいずれかを処理するために使用するPHPの冒頭に空の配列を作成し、最後にresultという名前の配列がjsonにエンコードされるようにします。

これはエラーです:Uncaught SyntaxError: Unexpected end of JSON input

<?php 
require_once '../../dbconfig.php'; 

$result=[]; 

if(empty($_POST['verify_id']) && empty($_POST['code'])) 
{ 
$result['success']=false; 
$result['error_msg']="empty codes"; 
} 

if(isset($_POST['verify_id']) && isset($_POST['code'])) 
{ 
$id = base64_decode($_POST['verify_id']); 
$code = $_POST['code']; 

$statusY = "Y"; 
$statusN = "N"; 

$stmt = $db_con->prepare("SELECT user_id,userStatus FROM tbl_users WHERE user_id=:uID AND tokenCode=:code LIMIT 1"); 
$stmt->execute(array(":uID"=>$id,":code"=>$code)); 
$row=$stmt->fetch(PDO::FETCH_ASSOC); 
if($stmt->rowCount() > 0) 
{ 
    $result["success"]=true; 
    if($row['userStatus']==$statusN) 
    { 
    $stmt = $db_con->prepare("UPDATE tbl_users SET userStatus=:status WHERE user_id=:uID"); 
    $stmt->bindparam(":status",$statusY); 
    $stmt->bindparam(":uID",$id); 
    $stmt->execute(); 
    $msg = "ok "; 
    $result['success_msg']=$msg; 
    } 
    else 
    { 
    $result['success']=true; 
    $msg = "active "; 
    $result['success_msg']=$msg; 
    } 
} 
else 
{ 
    $result['success']=false; 
    $msg = "account not found "; 
     $result['id']=$id; 
    $result['error_msg']=$msg; 
} 
} 
echo json_encode($result); 
?> 

/*get data to activate account*/ 
 
var verifyResult=[]; 
 
var success_msg=document.getElementById("container"); 
 

 
window.onload=function(){ 
 
\t //sendDataToVerificationPage(); 
 
\t var url = window.location.href; 
 
    var myId = url.slice(77,79); 
 
\t var myCode= url.slice(87); 
 
\t sendDataToVerificationPage(myId,myCode); 
 
}; 
 

 
/*send data to verification page*/ 
 
function sendDataToVerificationPage(myId,myCode){ 
 
\t \t \t var oOutput = document.querySelectorAll("div"), 
 
\t \t \t \t oData = "verify_id="+myId+"&code="+myCode; 
 
\t \t \t var oReq = new XMLHttpRequest(); 
 
\t \t \t oReq.open("POST", "verify.php", true); 
 
\t \t \t oReq.onload = function(){ 
 
\t \t \t \t if(oReq.readyState==4 && oReq.status==200){ 
 
\t \t \t \t \t receivedData(oReq); 
 
\t \t \t \t } else{ 
 
\t \t \t \t \t oOutput.innerHTML = "error" + oReq.status + "occurred when trying to upload your file.<br\/>"; 
 
\t \t \t \t } 
 
\t \t \t }; 
 
\t \t \t oReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
 
\t \t \t oReq.send(oData); 
 
} 
 

 
/*callback function to handle the received data*/ 
 
function receivedData(oReq){ 
 
    console.log(oReq.responseText) 
 
\t verifyResult=JSON.parse(oReq.responseText); 
 
\t console.log(verifyResult); 
 
\t if(!verifyResult.success){ 
 
\t \t $("#container").fadeIn(1000, function(){  
 
\t \t $("#container").html('<div class="alert alert-danger"> <span class="glyphicon glyphicon-info-sign"></span> &nbsp; '+verifyResult.error_msg+'</div>'); 
 
     }); 
 
\t }else{ 
 
\t \t success_msg.textContent=verifyResult.success_msg; 
 
\t } 
 
}

+0

JSON文字列のデコード中にエラーが発生したようです。その部分も見せていただけますか?私はそれがjavascriptだと思います。 – Tchoupi

+0

@Tchoupiあなたもjsの部分をあなたに提供する必要があるのですか? – Riccardo

+0

データを解析する必要があります。 'JSON.parse(your_php_encoded_var)' –

答えて

0

私は「することができます実際の問題として、プレーンテキストで成功し、エラーメッセージを交換することによって、問題を修正しました試した方法でjson htlmタグにエンコードします

$result['success']=true; 
 
    $msg = "ok"; 
 
    $result['success_msg']=$msg; 
 
    
 
    $result['success']=false; 
 
    $msg="account already activated"; 
 
    $result['error_msg']=$msg; 
 

 
    echo json_encode($result);