PHP Ajax响应在javascript解析时提供未定义的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP Ajax响应在javascript解析时提供未定义的数据相关的知识,希望对你有一定的参考价值。

它今天早些时候没有给出错误,但现在我得到的每个文件上载

Unexpected number in JSON at position 161

我浏览了文件上传JSON,并了解到该文件传递了非法的0:

    
    "ftype":"file",
    "meta":"prem-sal2.jpg",
    "fname":"screenshot1",
    "id":"392",
    "epn":"63",
    "action":"updategamefiles",
    "file":
      "name":"prem-sal2.jpg",
      "type":"image/jpeg",
      "tmp_name":"/tmp/phpxPZNCL",
      "error":0,
      "size":968969
     
    

这是选择文件的javascript

else if (fieldclass[1].indexOf("screenshot") >= 0) 
                ftype = 'file';
                document.getElementsByClassName(fname)[0].getElementsByTagName('label')[0].innerhtml = 'Loading';
                meta = this.files[0].name;
                file = this.files[0];
                 if( file.type === "image/jpg" || file.type === "image/png"  || file.type === "image/gif" || file.type === "image/jpeg") 
                 extension = true;
                 
            

那么我怎样才能避免出现错误:文件JSON中为0?

好吧,忘了添加Ajax请求:

    if (extension === true) 
    var data = new FormData();
    data.append('file', file);
    data.append('ftype', ftype);
    data.append('meta', meta);
    data.append('fname', fname);
    data.append('id', id);
    data.append('epn', epn);
    data.append('action', 'updategamefiles');
    var value = jQuery.ajax(
        data : data,
        type: 'POST',
        url: ajaxurl,
        cache: false,
        processData: false, // Don't process the files
        contentType: false, // Set content type to false as jQuery will tell the server its a query string request
        dataType: 'json',
        success: function(data, textStatus, jqXHR)     

            if( data.response == 'SUCCESS' )
                document.getElementsByClassName(data.fname)[0].getElementsByTagName('label')[0].innerHTML = 'Success';
                document.getElementsByClassName(data.fname)[0].getElementsByTagName('label')[0].style.backgroundImage = "url('" + data.thumb +"')";

             if( data.response == 'ERROR' )
            document.getElementsByClassName(data.fname)[0].getElementsByTagName('label')[0].style.background = '#fdd2d2';
            document.getElementsByClassName(data.fname)[0].getElementsByTagName('label')[0].innerHTML = 'Error';

            
            ,
        error: function(jqXHR, textStatus, errorThrown)    


            
        )
        
答案

事实证明,在回复编码的json以回应来自php后端后,我不得不使用die();,而没有我将额外的数据添加到json导致问题。

以上是关于PHP Ajax响应在javascript解析时提供未定义的数据的主要内容,如果未能解决你的问题,请参考以下文章

DOM 的 JavaScript 解析器

AJAX---响应数据格式

用纯 JavaScript 解析 JSON [重复]

在主页中运行用 AJAX 的调用/响应数据编写的 JavaScript 函数

带有json响应的jQuery ajax请求,如何?

使用 AJAX 从 PHP 文件中获取响应