为什么不是';在这种情况下,jQuery如何与PHP相处?
好的,在我提问之前,我会解释一下事情的流程。表单将数据提交到为什么不是';在这种情况下,jQuery如何与PHP相处?,php,jquery,Php,Jquery,好的,在我提问之前,我会解释一下事情的流程。表单将数据提交到ShareController中的add()方法(localhost/share/add),从那里它被传送到ShareModel方法createShare()中,魔法应该在那里发生 我的AJAX代码: var formData = $(form).serialize(); var form = $("#add-share"); $(form).submit(function(event) { event.preventDefault()
ShareController
中的add()
方法(localhost/share/add),从那里它被传送到ShareModel
方法createShare()
中,魔法应该在那里发生
我的AJAX代码:
var formData = $(form).serialize();
var form = $("#add-share");
$(form).submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData,
dataType : "json",
success : function(data) {
if(data == 1) {
alert("Woohoo!");
} else {
alert("Womp!");
}
console.log(data);
}
})
});
ShareController添加()方法:
ShareModel createShare()方法:
公共静态函数createShare($share\u title){
if(斯特伦($share_title)>55){
会话::添加('feedback_negative',文本::获取('feedback_SHARE_TITLE_LONG');
返回false;
}
if(strlen($share|u title)<5 |空($share|u title)){
会话::添加('feedback_negative',文本::获取('feedback_SHARE_TITLE_SHORT');
返回false;
}
$data[]=0;
echo json_编码($data);
}
问题是:
当我将后端PHP验证注释掉时,Ajax返回了一切良好的“Womp!”,但是当我实现它时,Ajax不起作用,后端验证也不起作用。有人知道这里发生了什么吗?您能复制XHR请求的正文吗?或
print\u r($\u POST)
您可能需要切换ajax代码的前两行以使表单数据具有值。if(data==1)
。但是data
是一个json对象。如果(data==1)
请显示您认为将响应设置为“1”的代码。您当前显示的所有内容都不会这样做。$data[]=0
没有将数据设置为0
,它将向JSON数据数组添加数组元素0
。如果您只想从PHP向AJAX响应返回1或0,您可以简单地使用echo“1”代码>(或0
),不带json\u encode
。可能最好像{success:true}
那样返回JSOn,而不是只返回0或1。
public function add() {
ShareModel::createShare(Request::post('share_title'));
Redirect::to('share');
}
public static function createShare($share_title) {
if(strlen($share_title) > 55) {
Session::add('feedback_negative', Text::get('FEEDBACK_SHARE_TITLE_LONG'));
return false;
}
if(strlen($share_title) < 5 || empty($share_title)) {
Session::add('feedback_negative', Text::get('FEEDBACK_SHARE_TITLE_SHORT'));
return false;
}
$data[] = 0;
echo json_encode($data);
}