使用JavaScript向服务器发送URL

使用JavaScript向服务器发送URL,javascript,Javascript,我不是一个伟大的程序员,希望得到帮助 下面的javascript代码应该将/update/1/3格式的url发送到我的django测试服务器,以更新项目。但是,当我尝试时,我只在控制台日志中看到/update/的帖子 <script type="text/javascript"> function goTo() { var url = '/update'; var quantity = document.forms[0].quantit

我不是一个伟大的程序员,希望得到帮助

下面的javascript代码应该将/update/1/3格式的url发送到我的django测试服务器,以更新项目。但是,当我尝试时,我只在控制台日志中看到/update/的帖子

<script type="text/javascript">
    function goTo()
    {
        var url = '/update';
        var quantity = document.forms[0].quantity.value;
        var menuitem_id = document.forms[0].menuitem_id.value;
        window.location = url+'/'+menuitem_id+'/'+quantity;
        return false;
    }
</script>

函数goTo()
{
var url='/update';
var quantity=document.forms[0]。quantity.value;
var menuitem_id=document.forms[0]。menuitem_id.value;
window.location=url+'/'+菜单项id+'/'+数量;
返回false;
}
我做错了什么

根据要求,请参阅HTML:

<div class="container">
<td class="table">
    <form method="post" action="." onsubmit="return goTo()">
    <div>
    {% csrf_token %}
        {% if item %}
        <label for="quantity">How much {{ item.product.name }} from {{ item.product.restaurant.name }} do you want?</label>
        <input style="height:25px;font-size:12pt;" type="text" name="quantity" value="{{ item.quantity }}" id="quantity" size="2" class="quantity" maxlength="5"/>
        <input type="hidden" name="menuitem_id" value="{{ item.product.id }}" id="menuitem_id"/>
        </td>
        <td>
        {% endif %}
    </div>
    <button class="btn btn-primary" type="submit">Update</button>
    </form>
</td>
</div>

{%csrf_令牌%}
{%if item%}
你想从{{item.product.restaurant.name}中得到多少{{item.product.name}}?
{%endif%}
更新

您发布的代码看起来不错。确保“quantity”和“menuitem_id”是页面上第一个表单(表单[0])中输入的名称(而不是id)。例如,很多时候,人们忘记了页面顶部的搜索栏在技术上是第一个表单

此外,如果这些输入是用户指定的,并且您希望它们始终是数字,那么它还可以帮助清除任何不需要的字符,例如:

var quantity = document.forms[0].quantity.value.replace(/[^0-9]/g,'');

..将从输入中删除任何非数字字符。这将防止空白弄乱URL路径,也有助于(稍微)保护您的用户免受javascript注入攻击。

您可以发布此操作所使用的HTML吗?是的,需要查看HTML。因此,如果它实际上是第二个,我是否应该改为使用表单[1]?是的。这只是一个从0开始计数的数组。您可以更精确地为表单提供一个id(“例如myForm”),然后直接使用document.getElementById(“myForm”).quantity.value…@DrWolfe作为Jon所说的补充,您还可以使用document.forms[“myForm”]来获取表单对象。