jQuery的抛出一个“非法调用”错误

问题描述 投票:0回答:1

我试图建立一个论坛和jQuery抛出一个“非法调用”的错误。

这里是我的jQuery代码:

$('#formSumbit').on('submit', function(e) {
      e.preventDefault();
      $.ajax({
        url: 'data-get.php',
        type: 'POST',
        data: new FormData(this),
        contentType: false,
        dataType: 'json',
        success: function(value) {
          var serialize = $.parseJSON(value);
          if (serialize.success == 'false') {
            $('.alert').fadeIn().delay(3000).fadeOut();
            $('.alert-msgText').html(serialize.datamsg);
}
}
          });
      });

这里是我的PHP代码:

      <?php
$user = $_POST['user'];
$msg = $_POST['message'];
if(empty($user)&&empty($message)) {
$data = array(
  'success' => 'false',
  'datamsg' => 'Please fill the textboxes'
);
echo json_encode($data);
} else {
mysqli_query($con,"INSERT INTO forums(name,message) VALUES ('$user','$msg')");
$data = array(
'success' => 'true',
'datamsg' => 'Done!'
);
echo json_encode($data);
}
exit();
?>

当文本框是空的,我点击提交按钮,似乎没有任何工作和jQuery抛出一个非法调用错误。我不明白是什么问题。能否请您帮忙吗?而在此先感谢!

javascript php jquery html html5
1个回答
0
投票

1)你有你的形式和您的JavaScript之间的一个错字错配:

<form id="formSubmit"$('#formSumbit') - 它应该是$('#formSubmit')相匹配的拼写。

data: new FormData(this), contentType: false:2)除非你试图通过这个AJAX请求上传文件,那么你可以通过更换$(this).serialize(),只用数据简化事情。这将摆脱非法调用错误的。

3)写作dataType: 'json'意味着jQuery将自动尝试解析服务器作为JSON来的数据,并将其转换。因此,在你的“成功”的功能,value就已经被解析并转换为对象。反过来因此,使用$.parseJSON是没有必要的。你可以只访问value.success直接,例如。

这里有一个固定的版本:

  $('#formSubmit').on('submit', function(e) {
    e.preventDefault();
    $.ajax({
      url: 'data-get.php',
      type: 'POST',
      data: $(this).serialize(),
      dataType: 'json',
      success: function(value) {
        if (value.success == 'false') {
          $('.alert').fadeIn().delay(3000).fadeOut();
          $('.alert-msgText').html(value.datamsg);
        }       
      }
    });
  });

工作演示:https://jsfiddle.net/khp5rs9m/2/(在演示中,我改变了你的网址为假的,只所以会得到回应,但你可以看到我已经改变了它,并在注释掉的部分留下您的设置)。

© www.soinside.com 2019 - 2024. All rights reserved.