PHP json响应不起作用

时间:2015-01-22 20:48:04

标签: php json

我正在进行ajax更新。我只想要成功或失败的回应,所以我知道如何处理前端的一些事情。问题是它不起作用。对这一切都是全新的。

$('.delete-template-popup .confirm').on('click', function() {
    var templateName = $('.loaded-template-name').html();

    var templateArray = {};

    templateArray.templateName = templateName;

    var JSONObject = [templateArray];
    var templateJson = JSON.stringify(JSONObject);

    $.ajax({
        url: 'http://localhost/ds-layouts/public/delete-template.php',
        type: 'post',
        data: {"templatePHP" : templateJson},
        success: function(data) {
            console.log(data)
            if (data.status == "success") {
                console.log(1)
            }
            // if (data.status == "success") {
            //  closePopup($('.delete-template-popup'));
            //  window.location.replace("http:////localhost/ds-layouts/public/manage-layouts.php");
            // } else {
            //  $('.delete-template-popup .error').show().html('An error occurred processing your request.  Please try again.  If this error persists contact blah.');
            // }                        
        }
    });
});

和php

if ($flag) {
        //mysqli_commit($connection);
        if ($debug) {
            echo "pass";
            echo "\r\n";
        }
        //$_SESSION["message"] = "Template delete was successful.";
        //header('Content-Type: application/json');
        header('Content-Type: application/json; charset=UTF8');
        echo json_encode(array('status' => 'success'));
    } else {
        if ($debug) {
            echo "fail";
            echo "\r\n";
        }
        //mysqli_rollback($connection);
        // header('Content-Type: application/json');
        // echo json_encode(array('status' => 'failure'));
    }

所以这笔交易是我进入了php判断的if块。如果我有块的标题部分,我会正确传递所有的echo语句,我可以在Chromes开发人员控制台中阅读它们。我取消注释标题声明的那一刻没有任何作用。这适用于$ flag case中的任何一个为true或false。

我在另一个区域有相同类型的脚本,它工作得很好。不要在意这些评论。我只是在评论事情,以找出事情的发展方向。这就是我如何确定标题导致它的原因。

3 个答案:

答案 0 :(得分:0)

也许将dataType: "json",添加到您的AJAX请求对象会有帮助吗?

答案 1 :(得分:0)

试试这个php

header('Content-Type: application/json'); //must be FIRST output. 
if ($flag) {

    //mysqli_commit($connection);
    if ($debug) {
        echo json_encode(array('debug' => 'pass'));
    }
    else
    {
        echo json_encode(array('status' => 'success'));
    }
} else {
    if ($debug) {
       echo json_encode(array('debug' => 'fail'));
    }
    else
    {
       //mysqli_rollback($connection);
       echo json_encode(array('status' => 'failure'));
    }
}

我已经更改了调试块以返回json,因为启用debug会打破ajax。

答案 2 :(得分:0)

由于答案是作为评论发布的,我无法将答案标记为已修复。我将把这个答案标记为解决问题的原因:

“标题必须在echo之前 - user4035”

感谢user4035让我知道在服务器的任何打印形式的html之前的任何回声之前的标题...我应该知道。