Javascript 获得;不允许使用的方法:/users/update_contact/";

Javascript 获得;不允许使用的方法:/users/update_contact/";,javascript,django,Javascript,Django,这是我的javascript函数,用于更新我的数据库。但是,我有两个错误: 方法不允许:/users/update\u contact/“ SyntaxError:JSON.parse:JSON数据第1行第1列的数据意外结束 最后,我的数据库没有更新 下面是调用该函数的按钮: <button onclick="update_contact()" class="update_contact">Update Contact Info</button> Django网址: p

这是我的javascript函数,用于更新我的数据库。但是,我有两个错误:

  • 方法不允许:/users/update\u contact/“
  • SyntaxError:JSON.parse:JSON数据第1行第1列的数据意外结束
  • 最后,我的数据库没有更新

    下面是调用该函数的按钮:

    <button onclick="update_contact()" class="update_contact">Update Contact Info</button>
    
    Django网址:

    path('update_contact/', view=update_contact, name="update_contact"),
    

    为什么要对JSON字符串执行
    JSON.parse
    ?请求主体应该具有JSON字符串,而不是javascript对象。因此,更改

     const options = {
            method: 'POST',
            body: JSON.parse(stringify_contact),
            mode: 'same-origin',
            dataType: 'json',
            headers : {
                'content-Type' : 'application/json',
                'X-CSRFToken': csrftoken,
                }
            }
    


    关于方法不允许的另一个问题,您是否可以先尝试上面的方法,看看它是否再次出现?另外,您在服务器上收到的请求的方法是什么?您可以使用浏览器中的开发工具进行检查。

    为什么您要对json进行字符串化,只是为了在之后立即对其进行解析?无论如何,发送字符串化版本并python解析通常对我有效。我一开始尝试过,但也不起作用。我遵循了一个链接,他们建议这样做。我尝试过,结果也一样。这是我在服务器上得到的一个POST方法。
    
    function update_contact (){
        url = "{% url 'users:update_contact' %}"; 
    
        git_profile = prompt("enter git profile name")
        phone = prompt("enter phone number")
        email = prompt("enter email address")
    
        const contact = {
            "git_profile" : git_profile,
            "phone_number" : phone,
            "email" : email 
        };  
      var stringify_contact = JSON.stringify(contact);
    
        const options = {
            method: 'POST',
            body: JSON.parse(stringify_contact),
        mode: 'same-origin',
        dataType: 'json',
            headers : {
                'content-Type' : 'application/json',
                'X-CSRFToken': csrftoken,
                }
            }
    
        fetch(url, options)
            .then(res => res.json())
            .then(res => console.log(res))
    }
    
     const options = {
            method: 'POST',
            body: JSON.parse(stringify_contact),
            mode: 'same-origin',
            dataType: 'json',
            headers : {
                'content-Type' : 'application/json',
                'X-CSRFToken': csrftoken,
                }
            }
    
     const options = {
            method: 'POST',
            body: stringify_contact,
            mode: 'same-origin',
            dataType: 'json',
            headers : {
                'content-Type' : 'application/json',
                'X-CSRFToken': csrftoken,
                }
            }