2014-11-11 6 views
0

Я использую Django для ввода некоторых данных в мою базу данных. После ввода данных я хочу его отредактировать. Теперь, что я пытаюсь, пользователь не должен перейти на любую другую страницу, чтобы изменить данные. Поэтому я внедрил javascript-метод, который редактирует текст на лицевой стороне.Обновление данных Django в таблице

Как я могу отразить изменения, внесенные пользователем в базе данных?

Соответствующий код приведен ниже:

<html> 
{% csrf_token %} 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
</script> 

     <table id="table"> 
       <tr> 
         <th>Name</th> 
         <th>Phone Number</th> 
       </tr> 
       {% for record in queryset %} 
       <tr> 
         <td onClick="clickable(this)"> {{record.first}} </td> 
         <td onClick="clickable(this)"> {{record.second}}</td> 
       </tr> 
       {%endfor%} 
     </table> 

<script> 
function clickable(ele) 
{ 
     var value = prompt("Enter the details"); 
     if(value) 
     { 
       ele.id='edited' 
       ele.innerHTML = value; 
       //I want to send the request to my django view to edit the database here 
       //The data has been updated. 

     } 

ответ

1

Вы должны отправить запрос Ajax к серверу с помощью JQuery, который вы используете. с запросом на запрос Ajax вы должны отправить свои обновленные данные.
Простой запрос Ajax может быть.

$('#click_place').click(function() { // when click is placed 
      $.ajax({ // create an AJAX call... 
       data: $(this).serialize(), // get the content here Ex. {'name': 'test', 'phone': '123'} 
       type: $(this).attr('method'), // GET or POST 
       url: $(this).attr('action'), // request url 
       success: function(response) { // on success.. 
        // display your message 
       } 
      }); 
      return false; 
     }); 

Вы можете следить за: How to POST a django form with AJAX & jQuery.
http://coreymaynard.com/blog/performing-ajax-post-requests-in-django/.

Редактировать: Вы можете просто вызвать функцию внизу в любом случае.

function myajaxhit() { 
       $.ajax({ // create an AJAX call... 
        data: $(this).serialize(), // get the content here Ex. {'name': 'test', 'phone': '123'} 
        type: $(this).attr('method'), // GET or POST 
        url: $(this).attr('action'), // request url 
        success: function(response) { // on success.. 
         // display your message 
        } 
       }); 
} 

просто позвоните myajaxhit() в любом месте. Пожалуйста, измените его согласно вашему требованию.

+0

THhnks для этого !! Мне было интересно, могу ли я просто определить функцию без необходимости события click, чтобы я мог вызвать эту функцию из другой функции. В этом случае я свяжу событие click с этой функцией, тогда клик здесь не нужен. –

+0

Gud :). Вы можете принять мой ответ и перенести его. –

+0

Готово! Не могли бы вы отредактировать ответ, чтобы рассказать мне, как идти по этому поводу, не дожидаясь щелчка? –

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