Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向超链接添加变量值_Javascript_Jquery_Ajax_Django - Fatal编程技术网

Javascript 如何向超链接添加变量值

Javascript 如何向超链接添加变量值,javascript,jquery,ajax,django,Javascript,Jquery,Ajax,Django,这是我的职责: 问题是我不知道如何为“链接”添加“值” 因此,我的函数将数据发布到不同的链接:http://127.0.0.1:8000/subject/create/ 但我希望我的链接取决于价值: 它应该是这样的: http://127.0.0.1:8000/subject/create/some_value/ 这就是该页面的全部js: $(document).ready(function (){ add_subject_to_subjects_list(); }); funct

这是我的职责: 问题是我不知道如何为“链接”添加“值”

因此,我的函数将数据发布到不同的链接:
http://127.0.0.1:8000/subject/create/

但我希望我的链接取决于价值: 它应该是这样的:

http://127.0.0.1:8000/subject/create/some_value/ 
这就是该页面的全部js:

$(document).ready(function (){
    add_subject_to_subjects_list();
});

function show_subjects_list() {
    $.post("/subject/list/", function(data){
        for( var i=0; i<data.length; i++) {
            $("#list").append('<li>'+data[i]['fields']['name']+'</li><br>');
        };
    }, 'json');
}

function add_subject_to_subjects_list() {
    var value = $("#id_name").val();
    var link = "/subject/create/"+value;
    show_subjects_list();
    $("#btn-create-subject").click(function() {
        $.post(link, function(data) {
            show_subjects_list();
            alert(data).hide("fast");
        });
    });
}
这就是我的html:

{% block left-menu %}

    <div class="sidebar">
        <h3>Subjects</h3>
        <p> Enter subject name to add </p>
        <br>

        <div id="create-subject">
            <form method="post" action="."> {% csrf_token %}
                {{ subject_creation_form.as_p }}
                <input type="button" value="Create Subject" id="btn-create-subject" />
            </form>
        </div>

            <div id="subjects-list">
                <a id="append">myID</a>
                <ul id="list">

                </ul>
            </div>
        </div>
{% endblock %}

单击处理程序附加在页面加载上,并使用当时的
id\u name
值(我假设为空),单击按钮时使用
id\u name

function add_subject_to_subjects_list() {
    show_subjects_list();
    $("#btn-create-subject").click(function() {
        $.post("/subject/create/"+$("#id_name").val(), function(data) {
            show_subjects_list();
            alert(data);//.hide("fast");
        });
    });
}

show\u subjects\u list

也要做同样的事情,就像@nnnnnn建议的那样,前两行代码必须放在$内。如下所示:

......
$("#btn-create-subject").click(function() {
        var value = $("#id_name").val();
        var link = "/subject/create/"+value;
        $.post(link, function(data) {
            alert(data);
        });
.......

谢谢大家)

你能发布更多的代码吗,特别是在调用函数和字段$(“#id_name”)的地方。看起来值是空的,而且警报不会返回jQuery对象。我看不到id为
id_name
@Musa的元素,这不是问题,因为Django会根据表单名称自动创建id。。。如果我查看“查看源代码”,我会发现它位于正确的位置。如果想法是在“#btn create subject”单击事件发生时使用“#id_name”字段的值,那么您需要在
处理程序中移动前两行
添加_subject_到_subjects_列表()
。click()
处理程序。否则,您总是使用第一次加载页面时“#id_name”的值。
class SubjectCreationForm(forms.Form):
    name = forms.CharField(label="Subject Name", widget=forms.TextInput(attrs={'size':9}))

    class Meta:
        exclude = ('created_by', 'created_time', 'num_of_followers', 'vote')
    def clean_name(self):
        name = self.cleaned_data['name']
        if len(name)>1:
            return name
        else:
            raise forms.ValidationError("Subject name should be longer")
function add_subject_to_subjects_list() {
    show_subjects_list();
    $("#btn-create-subject").click(function() {
        $.post("/subject/create/"+$("#id_name").val(), function(data) {
            show_subjects_list();
            alert(data);//.hide("fast");
        });
    });
}
......
$("#btn-create-subject").click(function() {
        var value = $("#id_name").val();
        var link = "/subject/create/"+value;
        $.post(link, function(data) {
            alert(data);
        });
.......