Django, JQuery, XMLHTTPRESPONSE 오류
-
21-08-2019 - |
문제
나는 django를 사용하여 기본적인 ajax를 배우려고 노력하고 있습니다. 내 간단한 프로젝트는 무작위로 선택하는 앱입니다. Prize
데이터베이스의 사용 가능한상에서 수량을 줄이고 반품 prize.name
페이지에.
jQuery의 $ .ajax 메소드를 사용하여 이것을 끌어 내고 있습니다. 실행중인 유일한 것은입니다 error
내 $ .ajax 호출에 정의 된 함수이지만 오류 메시지에는 "오류"만 표시됩니다. 나는 Ajax를 처음 접했기 때문에 아마도 명백한 것을 간과하고있을 것입니다. 관련 코드는 다음과 같습니다.
모델
class Prize(models.Model):
name = models.CharField(max_length=50)
quantity = models.IntegerField(default=0)
def __unicode__(self):
return self.name
urlconf
urlpatterns = patterns('',
(r'^get_prize/$', 'app.views.get_prize' ),
)
보다
def get_prize(request):
prizes = Prize.objects.filter(quantity__gt=0)
to_return = {}
if prizes:
rand = random.randrange(len(prizes))
prize = prizes[rand]
prize.quantity -= 1
prize.save()
to_return['prize'] = prize.name
data = simplejson.dumps(to_return)
return HttpResponse(data, mimetype='application/json')
else:
to_return['msg'] = "That's all the prizes. No more."
data = simplejson.dumps(to_return)
return HttpResponse(data, mimetype='application/json')
주형
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>User's Conference Prize Randomizer</title>
<link rel="stylesheet" type="text/css" href="/static-media/style.css" />
<script type="text/javascript" src="/static-media/jquery-1.2.6.min.js"></script>
<script type="text/javascript">
var get_prize = function() {
var args = {
type: "GET",
url: "get_prize",
dataType: "json",
success: done,
error: function(response,error_string,e){
alert( "Error: " + response.responseText + " " + error_string );
for (i in e){
alert(i);
}
}
};
$.ajax(args);
};
var done = function(response) {
if(response) {
alert(response);
}
else {
alert("Something boo-booed");
}
};
$(document).ready(function() {
$("#start").click(get_prize);
});
</script>
</head >
<body>
<p><a href="" id='start'>Get Prize</a>, this link isn't working how I'd like.</p>
</body>
해결책 3
맙소사. 나는 방금 제외했다 return false
Ajax 호출을 한 함수에서. N00B로가는 방법. : 0.
다른 팁
이것은 귀하의 질문과 정확히 관련이 없지만 데이터베이스에서 임의의 객체를 가져 오려는 경우 대신이 작업을 수행 할 수 있습니다.
prize = Prize.objects.filter(quantity__gt=0).order_by('?')[:1]
if prize:
prize = prize[0]
# Using a slice prevents an exception if the query returns an empty queryset.
# If you're not a fan of LBYL, you could wrap the query in a try...except block instead:
try:
prize = Prize.objects.filter(quantity__gt=0).order_by('?')[0]
except IndexError:
# No more prizes pal...done, fini.
이것은 귀하의 질문에 대한 직접적인 답이 아니지만 JQuery Taconite 플러그인을 보았습니까? 그것은 대부분의 ajaxy 물건을 사소하게 만듭니다. 더 Malup의 타코 나이트 페이지. 당신이 그것에있는 동안, 그의 체크 아웃 다른 우수한 플러그인.
제휴하지 않습니다 StackOverflow