2013-05-24 4 views
2

с помощью JQuery я сделал следующие данные в формате JSON:Неожиданный маркер «а»

[{"name":"date","value":"24-05-2013"},{"name":"omschrijving","value":""}] 

Это корректными JSON, но, когда я пытаюсь сгореть данные с помощью JQuery он дает мне следующую ошибку:

Unexpected token A

Здесь вы можете увидеть вызов AJAX:

$.ajax({ 
     type: "POST", 
     url: "modules/rma/ajaxhandler.php", 
     contentType:"application/json; charset=utf-8", 
     data: goededata, 
     dataType: 'json', 
     succes: function(data) { alert(data); }, 
      error: function(XMLHttpRequest, textStatus, errorThrown) { 
       alert(textStatus + " " + errorThrown); } 
    }).done(function() { 
    }); 

ajaxhandler.php содержит следующие строки:

<?php 
error_reporting(E_ALL); 
session_start(); 

/** 
* Ajaxhandler 
* 
*/ 

print_r($_POST); 

echo json_decode($_POST['data']); 
?> 

Данные, которые должны быть отправлены производится следующим образом:

var allFields = $([]).add(date).add(omschrijving).add(klachtomschrijving).add(status).add(artikelnummer).add(klantid).add(meldidrepro).add(meldidaankoop).add(leverancier).add(inkoopregelid).add(serienummer);` 

var goededata = JSON.stringify(allFields.serializeArray()); 

Как я могу исправить эту ошибку?

+0

Опубликовать полную строку JSON .. должно быть проблема с данными где-то. –

+0

Попробуйте запустить JSON через [jsonlint] (http://jsonlint.org/), чтобы убедиться, что он действительно прав. –

+4

«A» - это «A» в массиве, возвращаемое print_r. JTON DataType ДОЛЖЕН иметь действительный орган ответа JSON. И.Е. JSON и только JSON. – Benno

ответ

10

Вы не можете использовать print_r, потому что вы запрашиваете json. Ответ сервера недействителен. Прокомментируйте звонок print_r, и он должен работать.

Неожиданный маркер «а» происходит от выхода print_r:

array(
    ... 
) 

Вы можете использовать дополнительный ключ для отладки:

echo json_decode(array(
    'data' => $_POST['data'], 
    'debug' => print_r($_POST, true), // note the second parameter for print_r 
)); 

на стороне клиента, вы работаете с response.data и вашим Отладочный вывод находится в `response.debug '.

Но почему бы просто не отследить вывод журнала на стороне сервера в файл?

error_reporting(E_ALL); также будет проблемой.

Это всегда хорошая идея, чтобы установить тип ответа:

header('Content-type: application/json'); 
+0

@Brainscrewer попробуйте отключить 'error_reporting' –

+0

@JanDvorak Это ничего не меняет – Brainscrewer

+0

@Besnik Хорошо, но теперь это дало мне« Неожиданный токен ». Очевидно, что все еще что-то происходит, но я не могу понять, где. Я пытаюсь отправить из формы -> ajaxcontroller.php – Brainscrewer

3

Скорее всего, ваш print_r нарушает ожидаемый обратный звонок от вашего запроса AJAX. Кроме того, я не вижу, куда были отправлены какие-либо почтовые данные. То, что я ожидал бы здесь, это пустое поле оповещения. комментировать наш print_r

+0

Я удалил print_r, но теперь он дает мне «неожиданный токен» – Brainscrewer

+0

@Brainscrewer не забудьте установить 'header ('Content-type: application/json');' – brbcoding

+0

вы json-декодирование, вам нужно закодируйте его. Настройка типа содержимого не имеет ничего общего с ошибкой, которую вы получаете –

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