2015-12-23 2 views
2

Я новичок в jquery У меня есть php, который возвращает json, поэтому я могу получить его из jquery, но есть проблема с получением результата.Проблема синтаксического разбора json из jquery

Вот мой код:

calculate: function(me, answer, res_id, soulmates) { 
     console.log('CALCULATE: '); 
     var deferred = $.Deferred(); 
     data = { 
      'me': me, 
      'answer': answer, 
      'resid': res_id, 
     }; 
     $.ajax({ 
      url: appConfig.calculate_url, 
      type: 'post', 
      beforeSend: function() { 
       console.log('BEFORE'); 
       Site.switch_calculation_animations(); 
       console.log('AFTER'); 
       console.log(appConfig.calculate_url); 
      }, 
      data: JSON.stringify(data), 
      timeout: 15000 
     }).done(function(ans) { 
      console.log(ans); 
      console.log(ans.ok); 
      console.log(ans.combi_id); 
      console.log(ans.slug); 
      if (ans.ok == 'yes') { 
       console.log('YES'); 
       deferred.resolve(ans); 
      } 
     }).fail(function(jqXHR, textStatus, error) { 
      console.log('ERROR'); 
      Site.handle_exception('calculate', { 
       'textStatus': textStatus, 
       'error': error 
      }); 
      deferred.reject(); 
     }); 
     console.log('END CALCULATE'); 
     return deferred.promise(); 
    }, 

В журнале консоли я получаю:

CALCULATE: 
app.js?v=35:242 BEFORE 
app.js?v=35:244 AFTER 
app.js?v=35:245 /es/test_calculate/4170/waiting/ 
app.js?v=35:266 END CALCULATE 
app.js?v=35:250 {"ok":"yes","combi_id":6059244666,"slug":"true"} 
app.js?v=35:251 undefined 
app.js?v=35:252 undefined 
app.js?v=35:253 undefined 

Так что, хотя нормально значение «да», не входят в команду, если. Зачем? Что мне не хватает?

Благодаря

+3

прямо под 'data', и прямо над' timeout', добавьте 'DATATYPE: '', JSON' – adeneo

ответ

0

Попробуйте это:

}).done(function(ans) { 
     var data = $.parseJSON(ans) 
     console.log(data); 
     console.log(data.ok); 
     console.log(data.combi_id); 
     console.log(data.slug); 
     if (data.ok == 'yes') { 
      console.log('YES'); 
      deferred.resolve(data); 
     } 
+0

я работал! благодаря –

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