Django表格发布(AJAX)直接到其他地方

时间:2018-03-12 11:58:09

标签: ajax django django-forms

我知道我的问题很模糊,也被问了很多次(但我无法理解任何解决方案)。我想要的是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>

1 个答案:

答案 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')
                }
            }
        });