Jquery 访问cfm页面中的Ajax发布数据

Jquery 访问cfm页面中的Ajax发布数据,jquery,ajax,coldfusion,Jquery,Ajax,Coldfusion,我尝试使用Ajax/JQuery提交表单,在目标页面(response.cfm)上返回一个Json,该Json将在表单页面(form.cfm)上返回成功或失败消息(基于复选框)。但我似乎无法访问ajax请求发送的数据 form.cfm <form id="frm_test"> <input type="text" name="firstname" id="firstname" placehold

我尝试使用Ajax/JQuery提交表单,在目标页面(response.cfm)上返回一个Json,该Json将在表单页面(form.cfm)上返回成功或失败消息(基于复选框)。但我似乎无法访问ajax请求发送的数据

form.cfm

<form id="frm_test">
  <input type="text" name="firstname" id="firstname" placeholder="First name" required /><br>
  <input type="text" name="surname" id="surname" placeholder="Surname" required /><br>
  <input type="email" name="email" id="email" placeholder="Email" required /><br>
  <input type="checkbox" name="error" id="error" />Return error (check to see the error message. leave empty to see a success message)<br>
  <input type="submit" value="Save changes" id="submitdata" />
</form>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script>

  $("#frm_test").submit(function (eventData) {
    event.preventDefault();
    $("#message").empty();
    var postData = {
      first_name: $('#firstname').val(),
      family_name: $('#surname').val(),
      email: $('#email').val(),
      error: $('#error').is(':checked')
    };

    $.ajax({
      url: "response.cfm",
      method: "POST",
      data: postData
    }).done(
      function(response) {
        if (response["SUCCESSMESSAGE"] !== null) {
          $("#message").append(response["SUCCESSMESSAGE"]);
        } else if (response["EXCEPTIONMESSAGE"] !== null) {
          $("#message").append(response["EXCEPTIONMESSAGE"]);
        }
      });

    $("#frm_test").trigger("reset");
  });

</script>


<div id="message"></div>




返回错误(检查以查看错误消息。保留为空以查看成功消息)
$(“#frm_测试”)。提交(函数(eventData){ event.preventDefault(); $(“#消息”).empty(); var postData={ first_name:$('#firstname').val(), 姓氏:$('#姓氏').val(), 电子邮件:$('#email').val(), 错误:$(“#错误”)。是(“:选中”) }; $.ajax({ url:“response.cfm”, 方法:“张贴”, 数据:postData }).完成( 功能(响应){ if(响应[“成功消息”]!==null){ $(“#消息”).append(响应[“成功消息]); }else if(响应[“EXCEPTIONMESSAGE”]!==null){ $(“#消息”).append(响应[“例外消息]); } }); $(“frm#U测试”)。触发(“重置”); });
response.cfm

<cfprocessingdirective suppresswhitespace="Yes">

  <cfset response = {
    SuccessMessage: 'checkbox value' ? JavaCast("null", "") : "Success",
    ExceptionMessage: 'checkbox value' ? "An error occurred" : JavaCast("null", "")
  }>
  
  <cfheader name="Content-Type" value="application/json">
    
  <cfoutput> #serializeJSON(response)# </cfoutput>  
  
</cfprocessingdirective>

#(回应)

您需要检查
错误的过账值,该值将在
表单
范围中提供

  <cfset response = {
    SuccessMessage: form.error ? JavaCast("null", "") : "Success",
    ExceptionMessage: form.error ? "An error occurred" : JavaCast("null", "")
  }>

扩展Dan的解决方案

<cfsilent>

... 

<cfset response = [
   "SuccessMessage" : form.error ? JavaCast("null", "") : "Success",
   "ExceptionMessage" : form.error ? "An error occurred" : JavaCast("null", "")
 ]>

 ...

 <cfsilent>  

 <cfoutput> #serializeJSON(response)# </cfoutput>  

... 
...
#(回应)
那么变化是什么呢

  • 保持沉默是最有效的办法
  • 使用有序结构使调试更容易,因为结果保持相同的顺序
  • 使用带引号的键将它们保持在相同的情况下,这也使得调试更容易

  • 响应页面中是否有任何错误?你能检查coldfusion日志吗?你应该做一个ajax调用响应的console.log来查看返回的内容,我猜你使用的是
    SUCCESSMESSAGE
    ,而不是
    SUCCESSMESSAGE
    ,请注意大小写的区别。为什么我第一次尝试它时它就不起作用了?无论如何谢谢你