2012-11-20 52 views
1

編輯

當我編寫print.POST ['video']時,即使通過'video'的值也不會在控制檯上打印任何內容。我錯誤地得到了錯誤的值在JavaScript?我試圖讓'video34'(隱藏字段中的值)顯示出來。如何使用jQuery/AJAX訪問views.py中的變量?

我試圖使用POST在Django的jQuery/AJAX數據時遇到了問題。如何訪問views.py中的「視頻」變量?當我寫在views.py '打印視頻',我在控制檯中的錯誤說POST/edit_favorites/HTTP/1.1" 500 10113.

views.py

from django.shortcuts import render_to_response 
from django.http import HttpResponse 
from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def edit_favorites(request): 
    if request.is_ajax(): 
     message = "Yes, AJAX!" 
    else: 
     message = "Not Ajax" 
    return HttpResponse(message) 

URL配置:

url(r'^edit_favorites/', 'edit_favorites'), 

HTML:

<form method='post' id ='test'> 
    <input type="hidden" value="video34" /> 
    <input type='submit' value='Test button'/> 

    <div id = 'message'>Initial text</div> 

</form> 

的javascript:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#test").submit(function(event){ 
     event.preventDefault(); 
      $.ajax({ 
       type:"POST", 
       url:"/edit_favorites/", 
       data: { 
         'video': $('#test').val() // from form 
         }, 
       success: function(){ 
        $('#message').html("<h2>Contact Form Submitted!</h2>") 
        } 
      }); 
      return false; 
     }); 

    }); 
</script> 

回答

4

它在request.POST['video'],就像在一個正常的POST。

+0

當我編寫print.POST ['video']時,即使有'video'值,也不會在控制檯中打印任何內容。我錯誤地得到了錯誤的值在JavaScript?我試圖讓'video34'出現。 – sharataka

+0

是的。 '#test'指向表單,並且表單沒有'val()'。你應該給你的領域一個'id'並使用它。請注意,您也應該始終爲您的字段提供一個「名稱」,否則您將無法正常提交它們。 –

+0

使用$('#test')。serialize()來查看線路上的所有表單數據。就像Daniel說的那樣,表單沒有val(),所以你沒有發送任何東西 – josephmisiti

2

在控制檯POST /edit_favorites/ HTTP/1.1" 500 10113的消息中,「500」是關鍵。這意味着您的服務器代碼中有一個錯誤,很可能。在這種情況下,你試圖「打印」一個不存在的變量。事實上,我很驚訝你不會在某個地方看到回溯。

我不是Django的用戶,所以也許別人可以用更好的建議加入,但根據Django docs,所有的帖子參數都在request.POST這是一個字典型的對象。

我建議檢查:

if request.method == 'POST': 
    if 'video' in request.POST: 
     video = request.POST['video'] 
     # Do stuff, etc... 
    else: 
     # Raise an error 

這是在服務器端。在您的HTML中,您還需要爲所有表單輸入字段提供名稱。例如<input name="video" type="hidden" value="video32" />等。您不妨閱讀更多關於HTML表單發佈的信息。

+0

當我編寫print request.POST ['video']時,即使有'video'值,控制檯也不會打印任何東西。我錯誤地得到了錯誤的值在JavaScript?我試圖讓'video34'出現。 – sharataka

+0

在你的情況下,你的HTML也缺少表單輸入字段的'name'屬性。 – Iguananaut