Javascript $.ajax return“;“错误”;尝试发送长JSON时

Javascript $.ajax return“;“错误”;尝试发送长JSON时,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我在JS中生成对象数组,然后使用$.ajax(使用'JSON.stringify(myData)')将其发送到PHP 当数组中有50个对象(JSON.length==2401)时,它可以正常工作,但当数组中有77个对象(JSON.length==3709)时,它返回“error” 对象结构: { user_id: "27", hours: "2", service_id: "561" } 为什么会发生这种“错误” 当我尝试发送长JSON时,我会在域日志中获得带有“000”代码的“access”

我在JS中生成对象数组,然后使用
$.ajax(使用'JSON.stringify(myData)')将其发送到PHP

当数组中有50个对象(JSON.length==2401)时,它可以正常工作,但当数组中有77个对象(JSON.length==3709)时,它返回“error”

对象结构:

{ user_id: "27", hours: "2", service_id: "561" }
为什么会发生这种“错误”

当我尝试发送长JSON时,我会在域日志中获得带有“000”代码的“access”条目,没有任何数据。
JSON字符串有效,请使用联机JSON解码器进行检查

发送AJAX的代码:

requestReport() {
    this.makeObjectForAjax();
    const requestString = this.entriesForAjax;
    const auth = $('#auth').text();
    console.log(requestString);
    $.ajax({
        url: "/bitrix/TimeSheet/generateReport.php",
        data: {
            'data' : requestString,
            'auth' : auth
        },
        success: function (data, textStatus) {
            console.log(data);
            console.log(textStatus);
        },
        error: function (data, textStatus, thrown) {
            console.log(data);
            console.log(textStatus);
            console.log(thrown);
        }
    });
}
因此,
$.ajax
执行'error:function','textStatus'='error','shown'是空字符串

该方法首先从JS获取的原始数据生成一个数组,然后生成JSON

makeObjectForAjax() {
    let entriesArray = [];
    this.rawEntries.forEach(function (record) {
        let newObj = {
            'user_id' : Object.values(record.PROPERTY_117)[0],
            'hours' : Object.values(record.PROPERTY_119)[0],
            'service_id' : Object.values(record.PROPERTY_275)[0],
        };
        entriesArray.push(newObj);
    });
    this.entriesForAjax = JSON.stringify(entriesArray);
}
log(entriesArray)显示对象数组是有效的
在线JSON解码器表示来自

this.entriesForAjax = JSON.stringify(entriesArray);
这也是有效的

UPD:已解决!问题是,
$。默认情况下,ajax
发出GET请求。添加了
类型:“POST”
,现在它可以工作了
感谢@Phil对您的数据类型的评论:“json”只告诉jQuery您希望它解析返回的json,这并不意味着jQuery将自动字符串化您的请求数据

$.ajax({
        type: "POST",
        url : "URL",
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify({
            user_id: 27,
            hours: 2,
            service_id: 561,
        }),
        success: function(response) {
            console.log(response);
        },
        error: function(response) {
            console.log(response);
        }
});

您实际上并没有发送JSON。您正在传递一个对象作为数据,但是您需要字符串化该对象并传递字符串,而且您还缺少类型:post或get

您的数据类型:“json”只告诉jQuery您希望它解析返回的json,并不意味着jQuery将自动字符串化您的请求数据

$.ajax({
        type: "POST",
        url : "URL",
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify({
            user_id: 27,
            hours: 2,
            service_id: 561,
        }),
        success: function(response) {
            console.log(response);
        },
        error: function(response) {
            console.log(response);
        }
});
改为:

$.ajax({
        type: 'POST',
        url: "/bitrix/TimeSheet/generateReport.php",
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify({
            'data' : requestString,
            'auth' : auth
        }),
        success: function (data, textStatus) {
            console.log(data);
            console.log(textStatus);
        },
        error: function (data, textStatus, thrown) {
            console.log(data);
            console.log(textStatus);
            console.log(thrown);
        }
    });

你能分享你的代码吗?还有,错误是什么?你在哪里看到的?网络检查器说发生了什么?这是从本地数据库获取的任何API或简单数据吗?请在中检查请求本身。查看标题是什么(请求和响应的标题),以及响应的主体是什么。@phil只需将
type:'POST
添加到$.ajax即可解决此问题。非常感谢。