2016-04-23 2 views
1

Я пытаюсь вернуть значения из php, взаимодействуя с AJAX Post. Я читал, что должен использовать JSON dataType, но это первый раз, когда я это делаю, и получаю «SyntaxError: JSON.parse: неожиданный символ без пробелов после данных JSON в строке 1 столбца 72 данных JSON».Php с AJAX Post - Возвращаемые значения JSON

Мой AJAX является следующее:

function apfaddpost() { 
     var fd = new FormData($('#msform')[0]); 
     fd.append("main_image", $('#main_image')[0].files[0]); 
     fd.append("action", 'apf_addpost'); 
     $('#form-container').hide(); 
     $('#processing').show(); 
     var postProject = $.ajax({ 
      type: 'POST', 
      url: apfajax.ajaxurl, 
      data: fd, 
      dataType: 'json', 
      processData: false, 
      contentType: false, 
     }); 

     postProject.done(function(data, textStatus, XMLHttpRequest) { 
       $('#processing').hide(); 
       $('#confirm').show(); 
       //elements where I should display success message and link 
       var success = '#success'; 
       var projectlink = '#projectlink'; 
       jQuery(success).html(''); 
       jQuery(success).append(data.success); 
       $("#projectlink").attr("href", data.projectlink); 
     }); 

     postProject.fail(function(MLHttpRequest, textStatus, errorThrown) { 
       alert(errorThrown); 
     }); 
    } 

Мой PHP

if ($pid != 0) 
    { 
     $message = 'Your post has been successfully added!'; 
     $project_link = get_permalink($pid); 
     $result = array('success'=>$message,'projectlink'=>$projectlink); 
     echo json_encode($result); 
    } 
    else { 
     $message = 'Error occurred while adding the post'; 
     $result = array('fail'=>$message); 
     echo json_encode($result); 
    } 

Мой HTML, где должны быть напечатаны эти значения является:

<div id="confirm" class="row" style="display:none"> 
     <div class="col-sm-12"> 
      <h2 class="text-center"><?php _e("Thank you!","KleeiaDev") ?></h2> 
      <div class="text-center"> 
       <p id="success"></p><!-- Here should go the success message --> 
       <p> 
        <a id="projectlink" href="">Link</a><!-- Here should go the link I'm getting as result --> 
       </p> 
      </div> 
     </div> 
    </div> 

Где я неправильно?

+0

Каков ответ ajax? Проверьте ответ. – WhoAmI

ответ

1

Если ваш PHP выводит что-то еще после echo json_encode($result);, это приведет к этой ошибке.

Удостоверьтесь, что у вас нет ничего другого. Если логика приложения больше не используется после использования json_encode exit.

+1

Спасибо за помощь! Решено! Приветствия. – XiLab

Смежные вопросы