JQuery Ajax从表单中发送数据不起作用

时间:2017-03-12 00:15:06

标签: javascript php jquery ajax

我的脚本应该阻止页面刷新或重定向,但是当我单击“提交”按钮时,它会重定向我。

JavaScript控制台的错误消息

  

未捕获的TypeError:$(...)。val(...)。len不是函数

myScript.js

$( document ).ready(function() {
    console.log( "Ready!" );
    //Submitting the form data
    $("#user-form").submit(function(e){
        if($('#fName').val().len() != "" && $('#lName').val().len() != "" && $('#nickname').val().len() != "") {
            $.ajax({
               type: "POST",
               url: "user-process.php",
               data: $("#user-form").serialize(),
               success: function(data){
                   $('#user-form')[0].reset();
                   console.log(data); // show response from the php script.
               }
             });
         }
         else {
             alert("Please fill the fields.")
         }
        e.preventDefault();
    });

    setInterval(function(){ $(`#table`).load('info.php #table'); }, 1000); //Loading table data without refreshing page.

});

5 个答案:

答案 0 :(得分:0)

尝试使用.length而不是.len() https://api.jquery.com/length/

答案 1 :(得分:0)

val()返回一个字符串。字符串没有.len()功能。此外,由于您将其与另一个字符串进行比较,因此您无需获取长度,只需使用:

    if($('#fName').val() != "" && $('#lName').val() != "" && $('#nickname').val() != "") {

如果要查看长度,可以使用.length获取。但是,您应该将其与0进行比较,而不是与""进行比较:

    if($('#fName').val().length != 0 && $('#lName').val().length != 0 && $('#nickname').val().length != 0) {

$('#fName').val().length != ""之类的内容在技术上可行,因为JavaScript会将""转换为0,但这是一种糟糕的编码习惯,因为它会使代码难以理解。

答案 2 :(得分:0)

要知道字符串是否为空,您可以使用以下语句:  

  • $(selector).val() !== ''
  •  
  • !$(selector).val().length
  • $(selector).val().length === 0

(因为字符串长度永远不会是负数,所以最后两个相等)

关于重定向事实,请看一下stopPropagation和stopImmediatePropagation函数

https://api.jquery.com/event.stopimmediatepropagation/ https://api.jquery.com/event.stoppropagation/

答案 3 :(得分:0)

“len()”不是javascript函数,您可以将代码修改为:

if( $('#fName').val() && $('#lName').val() && $('#nickname').val() )

并将继续工作

答案 4 :(得分:0)

在JavaScript中,String对象没有len()函数,而是具有length属性。

用法:

var myString = "Hello";
console.log(myString.length); // returns 5