使用 AJAX 接收“未捕获的语法错误:意外令牌 (”


Receiving "Uncaught SyntaxError: Unexpected token (" with AJAX

我正在尝试将验证插件与Bootstrap中的表单集成。当我使用以下代码时,出现以下错误:

"未捕获的语法错误: 意外的令牌 (".

我无法弄清楚问题是否出在PHP,Javascript或两者上。这里的 PHP 编码是否正确?

JavaScript:

$(document).ready(function() {
$('#formBasic').formValidation({   
  framework: 'bootstrap',
  fields: {
    firstName: {
      validators: {
        notEmpty: {
          message: 'Name is required'
        }
      }
    },
    lastName: {
      validators: {
        notEmpty: {
          message: 'The password is required'
        }
      }
    }
  }
})
.on('success.form.fv', function(e) {
  e.preventDefault();
  var $form = $(e.target);
  var bv = $form.data('formValidation');
  $.post($form.attr('action'), $form.serialize(), function(result) {
        error: function () {
          alert("There was an error processing this page.");
          return false;
        },
        success: function (output) {
          $('#formBasicResults').html(output.responseText);
          alert('success');
        }
      }, 'json');
  });

.PHP:

function formBasic(){
$output = 'Output from Form Basic:
';
foreach ($_POST as $key => $value) {
    $output .= $key . ': ' . $value . '
';
}
echo $output;
}
if(in_array($_POST['function'], array('formBasic','formAdvanced'))){
$_POST['function']();
}else{
echo 'There was an error processing the form';
}

在声明successerror处理程序时,$.post语法不正确。试试这个:

$.post($form.attr('action'), $form.serialize())
    .done(function(result) {
        $('#formBasicResults').html(result.responseText);
        alert('success');
    })
    .fail(function() {
        alert("There was an error processing this page.");
    });

您可以使用$.ajax自由地将数据类型指定为jsonjsonp或文本

因此,使用 $.ajax 代替 $.post,您只需要包含的其他内容是 type:post .

$.ajax({
    type: "POST",
    url: "some.php",
    dataType: "json"
    data: { name: "John" },
    success:function () { //handle success calls},
    error:function () { //handle failure calls}
});

参考: http://api.jquery.com/jquery.ajax/