【问题标题】:Ajax call SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON dataAjax 调用 SyntaxError:JSON.parse:JSON 数据的第 1 行第 1 列的数据意外结束
【发布时间】:2016-05-25 00:08:01
【问题描述】:

我正在尝试使用 jquery 进行 ajax 调用并使用 Coldfusion 10 设置会话变量。这是我收到的错误:
SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

我是否忽略了什么?

$('#ToolTables_processing_1').on('click', function () {
    $.ajax({
        // the location of the CFC to run
        url: "redirects/selectedrows.cfm",
        // send a GET HTTP operation
        type: "post",
        // tell jQuery we're getting JSON back
        dataType: "json",
        // send the data to the CFC
         data: $('#form').serialize(),
        // this gets the data returned on success
        success: function (data) {
            console.log(data);
            window.location = 'forms/exitinterviewpdf.cfm';
        }, 
        // this runs if an error
        error: function (xhr, textStatus, errorThrown) {
            // show error
            console.log(errorThrown);
        }
    });
});

如果我取出datatype: json,我只会得到一个空字符串。

selectedrows.cfm

<cfset session.exitinterview.selected.selectedRowName = form.selectedRowName >
<cfset session.exitinterview.selected.selectedRowtodayDate = form.selectedRowtodayDate >
<cfset session.exitinterview.selected.selectedRowtitle = form.selectedRowtitle >
<cfset session.exitinterview.selected.selectedRowdepartment = form.selectedRowdepartment >
<cfset session.exitinterview.selected.selectedRowhireDate = form.selectedRowhireDate >
<cfset session.exitinterview.selected.selectedRowterminationDate = form.selectedRowterminationDate >
<cfset session.exitinterview.selected.selectedRowreasonLeaving = form.selectedRowreasonLeaving >
<cfset session.exitinterview.selected.selectedRowfeelPay = form.selectedRowfeelPay >
<cfset session.exitinterview.selected.selectedRowprogressHere = form.selectedRowprogressHere >
<cfset session.exitinterview.selected.selectedRowanotherJob = form.selectedRowanotherJob >
<cfset session.exitinterview.selected.selectedRowcomparewith = form.selectedRowcomparewith >
<cfset session.exitinterview.selected.selectedRowhigherSalary = form.selectedRowhigherSalary >
<cfset session.exitinterview.selected.selectedRowpreventLeaving = form.selectedRowpreventLeaving >
<cfset session.exitinterview.selected.selectedRowclearlyExplained = form.selectedRowclearlyExplained >
<cfset session.exitinterview.selected.selectedRowbyWhom = form.selectedRowbyWhom >
<cfset session.exitinterview.selected.selectedRowadequateTraining = form.selectedRowadequateTraining >
<cfset session.exitinterview.selected.selectedRowworkPerform = form.selectedRowworkPerform >
<cfset session.exitinterview.selected.selectedRowworkingCondition = form.selectedRowworkingCondition >
<cfset session.exitinterview.selected.selectedRowsalary = form.selectedRowsalary >
<cfset session.exitinterview.selected.selectedRowretirement = form.selectedRowretirement >
<cfset session.exitinterview.selected.selectedRowhealthPlan = form.selectedRowhealthPlan >
<cfset session.exitinterview.selected.selectedRowtuition = form.selectedRowtuition >
<cfset session.exitinterview.selected.selectedRowunileave = form.selectedRowunileave >
<cfset session.exitinterview.selected.selectedRowcoworkers = form.selectedRowcoworkers >
<cfset session.exitinterview.selected.selectedRowsupervisionReceived = form.selectedRowsupervisionReceived >
<cfset session.exitinterview.selected.selectedRowneededHelp = form.selectedRowneededHelp >
<cfset session.exitinterview.selected.selectedRowmanagerRespond = form.selectedRowmanagerRespond >
<cfset session.exitinterview.selected.selectedRowsuggestionsBetterPlace = form.selectedRowsuggestionsBetterPlace >
<cfset session.exitinterview.selected.selectedRowrealReasonForLeaving = form.selectedRowrealReasonForLeaving >
<cfset session.exitinterview.selected.selectedRowcomments = form.selectedRowcomments >

<cfoutput>#SerializeJSON(session.exitinterview.selected)#</cfoutput>

出错的地方

对于 VLAD

【问题讨论】:

  • 如果在 redirects/selectedrows.cfm 中硬编码一些 JSON 作为响应会发生什么?似乎 redirects/selectedrows.cfm 没有返回任何内容。你能把代码贴在 selectedrows.cfm 中吗?
  • 您为什么使用 .cfm 页面而不是 .cfc?虽然从技术上讲,您可以发布到 .cfm 脚本,但它使控制输出变得更加困难,并且比使用 .cfc 更容易无意中中断 ajax 调用。
  • 先尝试 1 个表单域。前尝试先发布并发送 selectedRowName=David。这样,如果它在您的表单值中或问题可能是 selectedrows.cfm 页面,您可以缩小问题的范围
  • @AlexBaban 上面我在 selectedrows.cfm 中发布了唯一的代码

标签: jquery json ajax coldfusion


【解决方案1】:

我在调试大型数据集时通常会缩小问题范围。请尝试示例代码

 <!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>

<body>

<form id="form" method="post" onsubmit="javascript:return(false)">

    <input type="text" name="SELECTEDROWNAME" id="SELECTEDROWNAME" value="Vlad" >   
    <input type="submit" id="ToolTables_processing_1" value="save" >    

</form>


<script type="text/javascript">

$(function(){

    $('#ToolTables_processing_1').on('click', function () {

        $.ajax({
            // the location of the CFC to run
            url: "redirects/selectedrows.cfm",
            // send a GET HTTP operation
            type: "post",
            // tell jQuery we're getting JSON back
            dataType: "json",
            // send the data to the CFC
             data: $('#form').serialize(),
            // this gets the data returned on success
            success: function (data) {
                console.log(data);
                //window.location = 'forms/exitinterviewpdf.cfm';
            }, 
            // this runs if an error
            error: function (xhr, textStatus, errorThrown) {
                // show error
                console.log(errorThrown);
            }
        });
    });
});//doc ready

</script>
</body>

</html>

selectedrows.cfm

    <cfset session.exitinterview.selected.selectedRowName = form.selectedRowName >
<!---<cfset session.exitinterview.selected.selectedRowtodayDate = form.selectedRowtodayDate >
<cfset session.exitinterview.selected.selectedRowtitle = form.selectedRowtitle >
<cfset session.exitinterview.selected.selectedRowdepartment = form.selectedRowdepartment >
<cfset session.exitinterview.selected.selectedRowhireDate = form.selectedRowhireDate >
<cfset session.exitinterview.selected.selectedRowterminationDate = form.selectedRowterminationDate >
<cfset session.exitinterview.selected.selectedRowreasonLeaving = form.selectedRowreasonLeaving >
<cfset session.exitinterview.selected.selectedRowfeelPay = form.selectedRowfeelPay >
<cfset session.exitinterview.selected.selectedRowprogressHere = form.selectedRowprogressHere >
<cfset session.exitinterview.selected.selectedRowanotherJob = form.selectedRowanotherJob >
<cfset session.exitinterview.selected.selectedRowcomparewith = form.selectedRowcomparewith >
<cfset session.exitinterview.selected.selectedRowhigherSalary = form.selectedRowhigherSalary >
<cfset session.exitinterview.selected.selectedRowpreventLeaving = form.selectedRowpreventLeaving >
<cfset session.exitinterview.selected.selectedRowclearlyExplained = form.selectedRowclearlyExplained >
<cfset session.exitinterview.selected.selectedRowbyWhom = form.selectedRowbyWhom >
<cfset session.exitinterview.selected.selectedRowadequateTraining = form.selectedRowadequateTraining >
<cfset session.exitinterview.selected.selectedRowworkPerform = form.selectedRowworkPerform >
<cfset session.exitinterview.selected.selectedRowworkingCondition = form.selectedRowworkingCondition >
<cfset session.exitinterview.selected.selectedRowsalary = form.selectedRowsalary >
<cfset session.exitinterview.selected.selectedRowretirement = form.selectedRowretirement >
<cfset session.exitinterview.selected.selectedRowhealthPlan = form.selectedRowhealthPlan >
<cfset session.exitinterview.selected.selectedRowtuition = form.selectedRowtuition >
<cfset session.exitinterview.selected.selectedRowunileave = form.selectedRowunileave >
<cfset session.exitinterview.selected.selectedRowcoworkers = form.selectedRowcoworkers >
<cfset session.exitinterview.selected.selectedRowsupervisionReceived = form.selectedRowsupervisionReceived >
<cfset session.exitinterview.selected.selectedRowneededHelp = form.selectedRowneededHelp >
<cfset session.exitinterview.selected.selectedRowmanagerRespond = form.selectedRowmanagerRespond >
<cfset session.exitinterview.selected.selectedRowsuggestionsBetterPlace = form.selectedRowsuggestionsBetterPlace >
<cfset session.exitinterview.selected.selectedRowrealReasonForLeaving = form.selectedRowrealReasonForLeaving >
<cfset session.exitinterview.selected.selectedRowcomments = form.selectedRowcomments >--->
<cfsetting showdebugoutput="false">
<cfcontent reset="true" >
<cfoutput>#SerializeJSON(session.exitinterview.selected)#</cfoutput>

正如其他人所建议的那样,它可能是一些格式错误的 JSON 数据,并且您发现 Application.cfc 中的一些代码是问题所在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多