AJAX第二次没有获得JSON数据

时间:2015-04-18 17:35:18

标签: javascript php jquery ajax json

我将Ajax请求发送到php文件,该文件返回提交数据的JSON数组,第一次很棒,它发送数据并获取它,所以我可以使用它,但第二次它给了我一个错误

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

我的目标是验证php文件中的数据,如果数据未经过验证,那么我将错误类添加到未验证的字段,然后用户更正这些字段,然后发送表单再次,没有刷新。

我的测试显示它第一次工作,但是当我想第二次发送表格时,它给了我上面的错误,任何线索它可以是什么?

AJAX:

$('#ajax').submit('submit', function(){

var that = $(this),
url = that.attr('action'),
type = that.attr('method'),
data = {};

that.find('[name]').each(function(index, value){
    var that = $(this),
    name = that.attr('name'),
    value = that.val();

    data[name] = value;
});

$.ajax({
    url: url,
    type: type,
    data: data,
    cache:false,

    success: function(response){
        var json = response,
        obj = JSON.parse(json);
        if(obj.title == 'Mrs.'){
        //  $('#title').addClass('has-warning');
            $(function () {
              $('#name').tooltip({ 'title': 'Please fill name'});
            });
        }
        alert(obj.title);
    }

});
return false;
});

PHP文件:

if(Input::exists()){
if(token::check(Input::get('token'))){

    echo json_encode(
    array(
        "title" => Input::get('title')
        )
    );
}

}

1 个答案:

答案 0 :(得分:0)

你的代币检查是罪魁祸首。它第二次没有工作,因为它返回空响应。这是因为您可能需要重新创建一个新令牌并使用第一个响应发送它。要测试这是否是问题,请写下:

if(Input::exists()){
 if(token::check(Input::get('token'))){

  echo json_encode(
  array(
    "title" => Input::get('title')
    )
  );
 }else{
   echo json_encode(
     array("title" => 'See? You need to update token')
   );
 }
}

您应该重新生成一个新令牌,然后以下列形式更新它的值:

echo json_encode(
     array("newToken" => Token::generate() )
   );