2017-01-27 2 views
0

Я получаю непонятную синтаксическую ошибку: непредвиденная строка хром-консоли при запуске ajax, где я пытаюсь добавить строку в нижнюю часть таблицы html с сохраненными данными, возвращаемыми с помощью JSON. Я действительно не могу определить его ....Неисправность синтаксиса: непредвиденная строка с ответом json

function create_person() { 
    console.log("create person is working!") 
    $.ajax({ 
     url : "{% url 'tande:create_person' %}", 
     type: "POST", 
     data: { first_name : $('#person-first-name').val(), surname : $('#person-surname').val(), email : $('#person-email').val(), coach_id : $('#person-coach-id').val(), is_coach : $('#person-is-coach').val(), position : $('#person-position').val(), contract_type : $('#person-contract').val()}, 

     success : function(json) { 
      $('#person-first-name').val(''); 
      $('#person-surname').val(''); 
      $('#person-email').val(''); 
      $('#person-coach-id').val(''); 
      $('#person-is-coach').val(''); 
      $('#person-position').val(''); 
      $('#person-contract').val(''); 
      console.log(json); 
      // ERROR OCCURS ON FOLLOWING LINE 
      var html = '<tr><td>'+json.personid+'</td><td>'+json.personfirstname+'&nbsp;'+json.personsurname'</td><td>'+json.personposition+'</td><td>'+json.personcontract+'</td><td>'+json.personemail+'</td><td>'+json.personcoachid+'</td></tr>'; 
      console.log("success"); 
      $('div#talk').html(html); 
      console.log(html) 
     }, 

     error : function(xhr,errmsg,err) { 
      // $('#results').html("<div class='alert-box alert radius' data-alert>Oops! We have encountered an error: "+errmsg+ 
      //  " <a href='#' class='close'>&times;</a></div>"); // add the error to the dom 
      console.log("uh oh"); 
      } 
     }); 
    }; 

Данные сохраняются успешно и объект JSON возвращается в консоль, я просто не могу показать его.

def create_person(request): 
    if request.method == "POST": 
     print "request post data in view" 
     firstname = request.POST.get('first_name') 
     print firstname 
     lastname = request.POST.get('surname') 
     emailadd = request.POST.get('email') 
     coachid = request.POST.get('coach_id') 
     isacoach = request.POST.get('is_coach') 
     positionheld = request.POST.get('position') 
     contracttype = request.POST.get('contract_type') 

     response_data = {} 

     starfruit = Person(first_name=firstname, surname=lastname, email=emailadd, coach_id=coachid, assign_as_coach=isacoach, position=positionheld, contract_type=contracttype) 
     starfruit.save() 

     response_data['personfirstname'] = starfruit.first_name 
     response_data['personsurname'] = starfruit.surname 
     response_data['personemail'] = starfruit.email 
     response_data['personcoachid'] = starfruit.coach_id 
     response_data['personiscoach'] = starfruit.assign_as_coach 
     response_data['personposition'] = starfruit.position 
     response_data['personcontract'] = starfruit.contract_type 
     response_data['personid'] = starfruit.id 
     # response_data = { 
     # '' 
     # } 
     print response_data 

     return JsonResponse(response_data) 

    else: 
     print "no post request in view" 
     return JsonResponse(response_data) 

Ошибка я получаю в консоли просто следующим образом:

(индекс): 845 Uncaught SyntaxError: Неожиданная строка

и это относится к линии я выделенному выше

var html = '<tr><td>'+json.personid+'</td><td>'+json.personfirstname+'&nbsp;'+json.personsurname'</td><td>'+json.personposition+'</td><td>'+json.personcontract+'</td><td>'+json.personemail+'</td><td>'+json.personcoachid+'</td></tr>'; 

Я не уверен, как еще подойти к этому ...

+0

Приведенный код ошибки. – Dmitry

+0

Я сделал редактирование, это единственная ошибка, которую я получаю в консоли разработчика Chrome. –

+0

Ваши json-ключи довольно нечитаемы. Кроме того, все поля начинаются с 'person', вы можете удалить это. – iFlo

ответ

0

Вы мисс a + между json.personsurname и следующими '</td><td>'.

Как правило, это очень плохая идея для создания такого HTML-кода; такого рода вещи легко пропустить.

+0

Спасибо, что исправлено, я не могу поверить, что пропустил это. Есть ли альтернатива, я не могу придумать, как это сделать? –

+0

Вы можете попробовать создать его в цикле for. Но даже разбиение его на несколько строк, где каждый из них делает «html + = ...», будет более ясным. –

+0

Спасибо за помощь! –