我知道我的问题很模糊,也被问了很多次(但我无法理解任何解决方案)。我想要的是url emd_samples
并从模板传递数据{ {1}}使用AJAX以json格式。
我认为我的ajax无效。当我按下按钮时,它会转到某个地方search_res/save_tweet
我是django和ajax的新手。
show_tweets.html
show_tweets.html
views.py
http://127.0.0.1:8000/search_res/?
urls.py
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Tweets Result</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
save_tweets = function(tweet_id,created_at,text,lang){
alert(tweet_id,created_at,text,lang);
$.ajax({
type : 'POST',
url : '/search_res/save_tweet/',
dataType : 'json',
data: {
'tweet_id' : tweet_id,
'created_at' : created_at,
'text' : text,
'lang' : lang
},
success: function(data) {
alert(data);
}
});
}
</script>
</head>
<body>
<h1 align="center">Tweets Results</h1>
<ul>
{% for k,v in json_d %}
<div>
{{ k }} : {{ v.full_text }}
<form onsubmit="save_tweets('{{ v.id_str }} , {{ v.created_at }} , {{ v.full_text }} , {{ v.lang }}')">{% csrf_token %}
<input type="submit" value="Toxic"/>
</form>
</div>
{% endfor %}
</ul>
</body>
</html>
答案 0 :(得分:0)
我唯一注意到的是您正在使用的save_tweet函数中的 views.py :
data = request.GET.get('tweet_id')
但是,由于您要发布数据,因此应使用
data = request.POST.get('tweet_id')
编辑: 在阅读了你的评论之后澄清你想要什么,看起来你在使用标准表单动作时使用AJAX。所以你的代码看起来像是:
<form action="/search_res/save_tweet/" method="post" id="form">
<input type="hidden" value="{{ v.id_str }}"/>
<input type="hidden" value="{{ v.created_at }}"/>
<input type="hidden" value="{{ v.full_text }}"/>
<input type="hidden" value="{{ v.lang }}"/>
</form>
或者你可以在views.py文件中使用save_tweet函数返回成功消息并处理Ajax成功函数的成功:
<强> views.py 强>
def save_tweet(request):
data = request.POST.get('tweet_id')
print(data);
#tweets(Text = data).save()
return HttpResponse(json.dumps({"data":data}), status=200,content_type="application/json")
<强> show_tweets.html 强>
$.ajax({
type : 'POST',
url : '/search_res/save_tweet/',
dataType : 'json',
data: {
'tweet_id' : tweet_id,
'created_at' : created_at,
'text' : text,
'lang' : lang
},
success: function(data, textStatus,jqXHR) {
if(jqXHR.status === 200) {
window.location.replace('success.html')
}
}
});