2013-11-08 5 views
4

Im, вызывающий функцию ajax и возвращающую некоторые данные JSON.jQuery Ошибка ответа Ajax с недопустимыми символами

Ive посмотрел на данные, и все это выглядит как сервер ответил, как он должен

Однако FireBug сообщает о проблеме и моя программа выходит из строя.

Это JSON ответ

{"status":"success","message":"item was added to cart OK","cost":38.5,"qty":11} 

Это ошибка из поджигатель

SyntaxError: JSON.parse: unexpected character 


return window.JSON.parse(data); 

Вот скриншот стеком вызовов; enter image description here

Вот Javascript

$('.submitform').click(function() { 
$.post('myrll.com/cart/add', $('[name=myform]').serialize(), function(data) { 
    var new_data = jQuery.parseJSON(data); 

    if(new_data.status=='error') 
    { 
     alert(new_data.message); 
    } 
    else 
    { 
     add_item_to_cart(new_data.cost,new_data.qty); 
    } 
}, 
'json' // I expect a JSON response 
); 

});

И, наконец, мой сценарий сервера PHP

$sys_message['status'] = 'success' 
    $sys_message['qty'] = $total_items; //this is INT 
    $sys_message['cost'] = $this->sfcart->total_cost_contents(); //FLOAT 
    $sys_message['message'] = $message; //string 

    echo json_encode($sys_message);return; 
+0

У меня была аналогичная проблема .. закодировать значение JSON, который с сервера возвращаться д и декодировать его на стороне клиента ... – Shashank

+0

я сделал , Я выложу свой код javascript за 1 мин. – IEnumerable

+0

Можем ли мы увидеть ваш код, который выполняет фактический вызов AJAX? Кажется, что ваш ответ AJAX хранится как строковый литерал, а не объект JavaScript. –

ответ

3

вы назначаете строку к парам ответа не JSon объект. thaty это дает вам ошибку. назначить прямой объект в ответ пары вместо строки

Вы ток ответ (строка сог есть "" вокруг этого)

response = "{"status":"success","message":"item was added to cart OK","cost":38.5,"qty":11}" 

Вы должны Response (не объект не котировки)

response = {"status":"success","message":"item was added to cart OK","cost":38.5,"qty":11} 

с из цитаты (")., а затем попробовать это работает

+0

Я хочу добавить свой php, потому что Im не уверен, что и как это происходит – IEnumerable

+0

попытайтесь добавить «header» («Content-type: application/json»); »над вашим php-кодом: http://stackoverflow.com/questions/ 10475652/jquery-post-processing-json-response # answer-10475737 –

+0

Я удалил эту строку, и она сработала:, 'json' // Я ожидаю ответа JSON – IEnumerable

0

1) он выходит из строя t response = conv(response); - строка, вероятно?

2) Убедитесь, что Content-type установлено на application/json.

+0

@ Томас, я думаю, что так и есть. Просто Pinal не знает, как лучше отформатировать ответы. –

+0

@ItayGrudev Хорошая точка. – Thomas

0

Я удалил эту строку, и это сработало: я не уверен, почему, возможно, конфликт с синтаксисом? Если кто-нибудь может объяснить, чем это будет полезно для себя и другие

,'json' // I expect a JSON response 
Смежные вопросы