natvxei4
@natvxei4

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Ajaxでのデータの保存について

解決したいこと

jQueryでデータの保存ができない
例)
”Djangoでタスク管理アプリをつくりたい! タスク管理編"を行っています。
https://qiita.com/kuma3_it/items/7cb0f838fa4f99a74441

発生している問題・エラー

22.PNG
追加ボタンを押しても追加されずこの画面から移行されません。
タスク名を入力せずに追加ボタンを押すと“タスク名を入力してください”と表示されます。

該当するソースコード

)modal.js

// タスク追加モーダル管理
$(function () {

    //追加ボタンを押した際
    $('#CTB').click(function () {
        //背景を付ける
        $("body").append('<div id="modal-bg"></div>');

        //モーダルウィンドウを表示
        $("#modal-bg,#modal-task-add").fadeIn("fast");

        //画面の背景もしくは戻るボタンを押したらモーダルを閉じる
        $('#modal-bg, #CTBC').click(function () {
            $("#modal-bg,#modal-task-add").fadeOut("fast", function () {
                $('#modal-bg').remove();
            });
        });
    });
});

)ajax.js

// プロジェクトタスク追加Ajax
$(function () {
    $('#TaskAddAjax').click(function () {

        //必須事項チェック
        let taskName = $('input[name=taskName]').val();

        if (taskName != "") { //入力があるかどうかないならELSE

            var $form = $('form[name=addTask]');
            //送信
            $.ajax({
                url: $form.prop("action"),
                method: $form.prop("method"),
                data: $form.serialize(),
                dataType: "JSON",
            })
                .done(function (data) {
                    var result = JSON.parse(data['taskdata'])

                    $('#taskAccordion').empty()

                    $.each(result, function (k, v) {
                        let taskData = v["fields"]

                        let taskHtml = '<li class="task' + taskData["priolity"] + '">' + taskData["task_name"] + '</li>'

                        $('#taskAccordion').append(taskHtml)
                    })
                })

        } else {
            alert('タスク名を入力してください')

    })
})

)our_project.html

{% extends "base.html" %}
{% block title %} TaskMan {% endblock %}
{% block mainT %}  {{ project.0.name }} {% endblock %}
{% block body %}

<nav class=" navbar-dark bg-dark flex-md-nowrap p-0 header">
    <a class="navbar-brand col-md-1 mr-0" href="/task/">戻る</a>
    <a  class="navbar-brand col-md-2 mr-0" href="{% url 'task:our_project_detail' project.0.pk %}"> プロジェクト詳細 </a>
    <a class="navbar-brand col-md-2 mr-0" id="CTB">タスク追加</a>
    <div class="btn-group">
        <div class="btn dropdown-toggle naviDrop" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            メンバー
        </div>
            <div class="dropdown-menu dropdown-menu-right" >
                <a class="dropdown-item" href="#"> {{ project.0.leader }} </a>
                {% if member != None %}
                    <div class="dropdown-divider"></div>
                    {% for person in member %}
                    <a class="dropdown-item" href="#"> {{ person }} </a>
                    {% endfor %}
                {% endif %}
            </div>
        </div>
    </div>
</nav>

{% if task == None %}
<div id="taskList">
    {% if task == None %}
        <ul>
            <li>タスクがありません</li>        
        </ul>
    {% else %}
        <ul id="taskAccordion">
            {% for content in task %}

                <li class="selectTask task{{content.priolity}}" value="{{content.task_cd}}"> {{content.task_name}} </li> 
            {% endfor %}
        </ul>
    {% endif %}

</div>

<div id="modal-task-add">
    <h4>追加タスク</h4>
    <form name="addTask" method="POST" action="{% url 'task:add_task' project.0.pk %}">
        <table class="table">
            <tr>
                <th>タスク名</th>
                <td><input type="text" name="taskName" style="width:80%;"></td>
            </tr>
            <tr>
                <th>担当</th>
                <td>
                    <select name="user" id="selectC" style="width:80%;">
                        <option value="">---</option>
                        <option value={{ project.0.leader.pk }}>{{ project.0.leader }}</option>
                        {% for person in member %}
                            <option value={{ person.pk }}>{{ person }}</option>
                        {% endfor %}
                    </select>
                </td>
            </tr>
            <tr>
                <th></th>
                <td><input type="text" id="writeCN" name="userName" style="width:80%;"></td>
            </tr>
            <tr>
                <th>詳細</th>
                <td><textarea name="details" rows="4" cols="50" style="width:80%;"></textarea></td>
            </tr>
            <tr>
                <th>開始日</th>
                <td>
                    <input type="date" name="startDate" style="width: 80%;">
                </td>
            </tr>
            <tr>
                <th>終了日</th>
                <td>
                    <input type="date" name="endDate" style="width: 80%;">
                </td>
            </tr>
            <tr>
                <th>優先度</th>
                <td>
                    <input type="range" name="priolity" min="1" max="5" value="3" style="width: 80%;"> &emsp; <span id="priolityNo" style="font-size:14px;">3</span>
                    <br>
                    <p>数値が大きいほど優先度が高いです</p>
                </td>
            </tr>
        </table>
        {% csrf_token %}
    </form>
    <button type="button" id="CTBC" class="btn btn-primary" style="margin-right:10px;">キャンセル</button>
    <button type="button" id="TaskAddAjax" class="btn btn-success" id="addTask" >追加</button>
</div>
{% endif %}
{% endblock %}

どのようにすれば追加できるようになりますか

0

2Answer

githubのrepositoryはいないでしょか?
これだけ見ればよくわかりません

0Like

Comments

  1. repositoryのurlを教えてくれてありがとうございます
    簡単にPR送りました!
    問題を解決した後
    また送ってあげます:)

PR送りました:)

commit 歴史のなか「bug fix」に解決ソースを更新しました

1. 問題は task dataがあってもhtmlに伝えない

context['task'] = None

2. 伝えてもhtml template 条件が間違っています

{% if task == None %}
{% endif %}

sbsbsb.png

参考になりましたか?:)

0Like

Your answer might help someone💌