2017-08-23 15 views
-1

以下のPHPはうまくいきます。あなたが任意の変数を表示するためにPHPにprint_rまたはechoを追加するときにまだそれは次のようなエラーが送信されます。echo json_encodeがprint_rと競合しており、PHPのecho

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 83 of the JSON data

function Administrator(){ 
    $(document).on('change',function(e){ 
     if(e.target.tagName ==="SELECT"){   
      ChangingSelect="Changing|"+e.target.id+"|"+$('#' +e.target.id + ' option:selected').text(); 
      //console.log(ChangingSelect); 

      $.ajax({ 
       type: "POST",   
       url: "ChangingTool.php?ChangingSelect="+ChangingSelect}) 
      .done(function(data){  
        var Mydata = JSON.parse(data); 
        console.log("hi"); 
        $.each(Mydata, function (i,item) { 
         var SelectedDataArr=Mydata[i].selected.split('|').filter(function(x){return (x !== (undefined || null || ""));}); 
         $('#'+Mydata[i].id).empty(); 
         $.each(SelectedDataArr,function(j,item){ 

          $('#'+Mydata[i].id).append('<option value="' + j + '">'+ SelectedDataArr[j]+'</option>'); 
         }); 
        }); 

      }); 
     } 
    }); 
} 

がどのようにこの問題を克服するために、次のように

 foreach ($ChangingMap as $key => $value){  

      $SqlVariables[$key]=array(
       'id' => $ChangingMap[$key]['element_id'], 
       'action' => $ChangingMap[$key]['e_action'], 
       'record' => $ChangingMap[$key]['e_record'], 
       'table' => $ChangingMap[$key]['e_table'], 
       'ascendant' => $ChangingMap[$key]['ascendant'], 
       'where' => $ChangingMap[$key]['descendant'] 
      );   
      if ($ChangingMap[$key]['status']==$Basic_Status[0]){ 
       for($i=0;$i<sizeof($Variable_holder);$i++){ 
        $carrier=explode("|", $ChangingMap[$key][$Variable_holder[$i]]); 
        $SqlVariables[$key][$Query_Variable_holder[$i]]=$carrier[0]; 
       } 
       $SqlVariables[$key]['where']=$Query_Destination[0]; 
      } 

      $SqlQuery[$key]= $SqlVariables[$key]['action'].' '.$SqlVariables[$key]['record'].' FROM '.$SqlVariables[$key]['table'].' WHERE ' .$SqlVariables[$key]['where'].'="'.$ChangingArr[1].'"';     
      $SqlArray[]=array(
       'id' => $ChangingMap[$key]['element_id'], 
       'sql'=> $SqlQuery[$key] 
      ); 
      $ClearStr=''; 
      $test=CallData('Changing',$SqlArray[$key]['id'],$SqlArray[$key]['sql'],$ClearStr); 
     } 

    } 
    //print_r($test); 
    echo json_encode($test); 
} 

javascript関数はありますか?変数をテストする能力が制限されています。

+1

私はPHP全体を見ることはありません(ありがとうございます)、私はいくつかの文字がPHPスクリプト全体に残っていると思います...あなたの開発者ツールでは、厳密にJSONオブジェクトだけですか? – Salketer

+0

PHPレスポンスから有効なJSON文字列を取得していることを確認してください。 – muaaz

+0

JSONレスポンス( 'print_r($ test)')をデバッグしたいのであれば、ブラウザ開発ツール(通常は 'F12'ショートカット)を使ってレスポンスを調べることをお勧めします。 – xander

答えて

1

データにデバッグメッセージを出力しないでください。もちろん、それはあなたのデータを壊すでしょう。 error_log,syslog、または平文のようなものfile_put_contents('debug.log', var_export($foo, true), FILE_APPEND)を使用して、デバッグデータをログファイルに出力してください。