it-swarm.com.de

So lösen Sie SyntaxError: JSON.parse: unerwartetes Zeichen in Zeile 1 Spalte 1 der JSON-Daten in ajax und php

So lösen Sie diesen Fehler: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

ich habe einige Daten von und an Ajax und PHP gesendet.

hier ist mein ajax code:

flag = 111;
var dt = $(this).serializeArray();
dt.Push({
  name: 'flag',
  value: flag
});

$.ajax({
  url: 'emp.php',
  type: "post",
  async: true,
  data: dt,
  dataType: 'html',
  contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  success: function(data) {
    var x = JSON.parse(data); //THIS Line shows error!!
    alert(x);
    $('#name').val(x.ename);
    $('#designation').val(x.designation);
    $('#department').val(x.department);
    $('#sd').val(x.secdivision);
  },
  error: function(jqXHR, textStatus, errorThrown) {
    console.log(textStatus, errorThrown);
  }
});

hier ist mein php:

$empid = (isset($_POST['employeeid'])) ? $_POST['employeeid'] : 'NOT';
$flag  = (isset($_POST['flag'])) ? $_POST['flag'] : 0;
if($flag == 111){
    $stid = oci_parse($conn, " begin   
                       :result :=  PKG_PAYROLL.get_emp_by_id('<employee_id>$empid/employee_id>');  
                       end;" ); 

    oci_bind_by_name($stid, ':result',$ru, 5000);   
    $output = oci_execute($stid);
    $ru = new SimpleXMLElement($ru);    
    $json = json_encode($ru, JSON_NUMERIC_CHECK);
    $jsonarray = json_decode($json ,true);  
    $jsn = $jsonarray['employee'];

    $array = array('employee' =>   $jsn['EMPID'],
                       'ename' => $jsn['ENAME'],
                       'designation' => $jsn['DESIGNATION'], 
                       'department'=>  $jsn['DEPARTMENT'],
                       'secdivision'=>  $jsn['SECDIVISION']);                      
    echo json_encode($array);
}

Updates: .__ Hier ist ein Beispiel von Antwortdaten, die ich nach echo json_encode($array); in der Konsole erhalten habe.

<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding
='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f
; font-size: x-large;'>( ! )</span> Notice: Undefined index: employee in C:\wamp\www\Payroll\emp.php
 on line <i>24</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align
='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left'
 bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0002</td><td bgcolor
='#eeeeec' align='right'>247040</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\Payroll
\emp.php' bgcolor='#eeeeec'>..\emp.php<b>:</b>0</td></tr>
</table></font>
{"employee":"FMCSC00015","ename":"Tom","designation":"Teacher","department":"English","secdivision":"Academic"
}

parsererror SyntaxError: JSON.parse: unerwartetes Zeichen in Zeile 1 Spalte 1 der JSON-Daten

Ich bin verwirrt über den Hauptgrund dieses Fehlers, weil ich dieselbe Art von Codierung bereits mit json gemacht habe. Ich habe überprüft, dass PHP gut funktioniert.

5

Sie geben JSON vom Server zurück und analysieren HTMLdatentyp auf der Clientseite. Ändern Sie also in Ihrem Code Ihren Datentyp: 

dataType: 'html'

zu 

dataType: 'json'

Hoffe das hilft. 

8
Drudge Rajen

**** Wenn Ihre Antwort im HTML-Format vorliegt, die Antwort jedoch Json-Daten enthält. Dann ist dieser Fehler aufgetreten ('JSON.parse: unerwartetes Zeichen in Zeile 1, Spalte 1 der JSON-Daten'). Um diesen Fehler zu vermeiden, haben Sie diesen Code wie folgt geschrieben: ****

$.ajax({
       url: 'emp.php',
       type: "post",
       async: true,
       data: dt,
       dataType: 'html',
       contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
       success: function(data) {
       try {
         var x = JSON.parse(data);
       } catch (e) {
           return false;
       }
         //JSON.parse(data) THIS Line shows error!!
       alert(x);
       $('#name').val(x.ename);
       $('#designation').val(x.designation);
       $('#department').val(x.department);
       $('#sd').val(x.secdivision);
      },
    error: function(jqXHR, textStatus, errorThrown) {
       console.log(textStatus, errorThrown);
    }
  });

Wenn Sie eine Antwort von PHP im einfachen Json-Format haben, müssen Sie diesen Code verwenden. In diesem Fall ist Ihre Antwort von PHP Datei jedoch nur im Json-Format.

$.ajax({
   url: 'emp.php',
   type: "post",
   async: true,
   data: dt,
   dataType: 'json',
   contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
   success: function(data) {
   $('#name').val(data.ename);
   $('#designation').val(data.designation);
   $('#department').val(data.department);
   $('#sd').val(data.secdivision);
  },
  error: function(jqXHR, textStatus, errorThrown) {
   console.log(textStatus, errorThrown);
}
0
Sandeep K.