为什么不是';在这种情况下,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);
}