【问题标题】:My Ajax script not work with datatype json我的 Ajax 脚本不适用于数据类型 json
【发布时间】:2020-04-24 14:58:00
【问题描述】:

在我的代码中,我可以毫无错误地发布数据。但我无法从 php 文件返回数据以显示在我的 html 标记中。如果我删除 dataType:'json',它可以正常工作,但你知道我无法获取数据。我在 datatype = json 时收到此错误

error : {"readyState":4,"responseText":"<head>\n<meta charset=\"UTF-8\">\n</head>\n-1","status":200,"statusText":"parsererror"}

我的ajax;

$(document).ready(function(){

    // like and unlike click
    $(".like, .unlike").click(function(){
        var id = this.id;   // Getting Button id
        var split_id = id.split("_");

        var text = split_id[0];
        var postid = split_id[1];  // postid

        // Finding click type
        var type = 0;
        if(text == "like"){
            type = 1;
        }else{
            type = 0;
        }

        // AJAX Request
        $.ajax({
            url: 'likeunlike.php',
            type: 'post',
            data: {baslikid:postid,type:type},
            dataType: 'json',
            success: function(data){
                var likes = data['likesonuc'];

                $("#sonuc_"+postid).text(likes);        // setting likes

                if(type == 1){
                    $("#like_"+postid).css("color","#ffa449");
                    $("#unlike_"+postid).css("color","lightseagreen");
                }

                if(type == 0){
                    $("#unlike_"+postid).css("color","#ffa449");
                    $("#like_"+postid).css("color","lightseagreen");
                }


            },
            error: function(data){
                alert("error : " + JSON.stringify(data));
            }

        });

    });

});

我的 php 文件(我没有在上面分享以避免混淆。我从 $likesonuc 得到 int 结果)

$likesonuc= $total_likes - $total_unlikes;


echo json_encode($likesonuc);

【问题讨论】:

  • 听起来您的 JSON 无效。查看网络面板中的http请求。它是否有从您的 php 返回的其他标记?
  • 这似乎很能说明问题:"responseText":"&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;/head&gt;\n-1" 如果数据不是 JSON,则使用 dataType: 'json' 将不起作用。
  • @epascarello 我查看网络面板,但我的 php 文件没有返回任何内容
  • 您的消息中的 responseText 显示了 HTML 标记,因此它正在返回一些内容。您需要显示您的 PHP 文件,以便有人可以指出它返回 html 的原因。
  • 是的,你是对的,我删除了 head 标签。我现在没有收到任何错误,但数据也没有。我的ajax成功部分可能有问题吗?或者有什么方法可以查看来自php的哪些数据?

标签: json ajax


【解决方案1】:

在您的回复中,您可以看到您从 PHP 返回的正文:

<head>\n<meta charset=\"UTF-8\">\n</head>\n-1

...不是 JSON。看起来您正在某处写出 HTML 的头部,然后是 JSON 编号 -1。您需要在响应中发送just JSON,否则无法将其解析为 JSON。

【讨论】:

  • 是的,你是对的。我从 php.ini 中删除了 。现在我没有收到任何错误,但也没有收到数据。如果显示没有错误,表示我得到了数据,但成功后有问题?
  • 检查浏览器控制台中的错误或在代码中设置断点,以便查看发生了什么。
  • 我在控制台中没有看到任何错误。其余的成功都在起作用,但是 var likes = data['likesonuc'];不是。你上面说了。但是我怎样才能用 json 发送一个号码
  • data 号码。
  • 你太棒了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 2013-04-20
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多