在jquery中提交触发器Uncaught RangeError

时间:2017-02-02 08:56:50

标签: javascript jquery ajax

我正在尝试使用AJAX发布表单,为了实现这一点,我正在使用jQuery。我为此写的代码如下:

$("#addStaffForm").on("submit", function(event) {
    event.preventDefault();

    var formPost = $.post("/medewerkers-toevoegen", {
        "_token": $("input[name=_token]"),
        "voorletters": $("input[name=voorletters]"),
        "tussenvoegsels": $("input[name=tussenvoegsels]"),
        "achternaam": $("input[name=achternaam]"),
        "gebruikersnaam": $("input[name=gebruikersnaam]"),
        "wachtwoord": $("input[name=wachtwoord]")
    });

    formPost.done(function(data) {
        console.log("data");
    });
});

然而,很简单,当我尝试实际提交表单时,我得到了这个:

Uncaught RangeError: Maximum call stack size exceeded
    at Function.type (jquery.min.js:1)

我不知道为什么会给我这个错误,我能想到的唯一解释是我创建了一个无限循环,但我似乎无法找到它。

这个小而简单的代码怎么可能不像我想要的那样工作呢?

由于

2 个答案:

答案 0 :(得分:0)

你应该试试这个

<Window x:Class="MVVM_Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:MVVM_Test"
        xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ListBox Margin="6" Grid.RowSpan="2" Name="PART_LISTBOX">
            <sys:String>String 1</sys:String>
            <sys:String>String 2</sys:String>
            <sys:String>String 3</sys:String>
        </ListBox>
        <StackPanel Name="PART_spViewModel2" Grid.Column="1" Grid.Row="1">
            <StackPanel.DataContext>
                <local:ViewModel2 BoundString="{Binding ElementName=PART_LISTBOX,
                                  Path=SelectedItem,
                                  diag:PresentationTraceSources.TraceLevel=High}" />
            </StackPanel.DataContext>
            <TextBox Margin="6" Text="{Binding BoundString}" />
        </StackPanel>
    </Grid>
</Window>

答案 1 :(得分:0)

找到答案!我忘了我实际上是在发送整个jquery元素而不是输入值。

$("#addStaffForm").submit(function(e) {
        e.preventDefault();
        var token = $("input[name=_token]").val();
        var voorletters = $("input[name=voorletters]").val();
        var tussenvoegsels = $("input[name=tussenvoegsels]").val();
        var achternaam = $("input[name=achternaam]").val();
        var gebruikersnaam = $("input[name=gebruikersnaam]").val();
        var wachtwoord = $("input[name=token]").val();


        $.post("/medewerkers-toevoegen", {
            "_token": token,
            "voorletters": voorletters,
            "tussenvoegsels": tussenvoegsels,
            "achternaam": achternaam,
            "gebruikersnaam": gebruikersnaam,
            "wachtwoord": wachtwoord
        }, function(data) {
            console.log(data);
        }, function(data) {
            console.log(data);
        });
    });

适合我!