我将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')
)
);
}
}
答案 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() )
);