Coldfusion Jquery Ajax调用--500错误

时间:2014-07-18 13:28:32

标签: jquery coldfusion coldfusion-9 cfml

我知道这个话题已经被打死了。但是我无法从我的研究中解决这个问题。我正在使用CF 9和Jquery 1.8。我试图使用cfc进行ajax调用并得到500错误。我将其更改为cfm并将url路径内部转出。我有很多其他代码没有提供路径(默认为当前文件夹)。开发工具给了我以下响应;

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>500 - Internal server error.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>500 - Internal server error.</h2>
  <h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>
 </fieldset></div>
</div>
</body>
</html>

我可以直接从浏览器发布页面,它可以完美地执行。没有500错误,数据更新到DB。我没有在服务器上找到的日志条目。 代码段是;

$('##clnoteformdivedit').on('click', function() {
                var thisuserid = $(this).parent().find('##ClIndNoteIndivnum').val();
                var thisindivnote = $(this).parent().find('##indNote').val();
                alert(thisuserid + '--' + thisindivnote);
                $.ajax({
                    type: 'POST',
                    url: "actUpdateClIndivNote.cfm",
                    data: 'calllistID=' + <cfoutput>#val(attributes.callListId)#</cfoutput> + '&userid=' + thisuserid + '&IndivNote' + thisindivnote,
                    error: function(xhr, textStatus, errorThrown) {
                        // show error
                        alert(errorThrown);
                    },
                    success: function(response1, textStatus, jqXHR) {
                        $('##clnoteformdivedit').hide();
                        $('##clnoteformdivdisplay').show();
                    }
                });
            });

actUpdateClIndivNote.cfm code;

<cfset attributes.suppresslayout2 = "true">
<cfquery datasource="#request.dsn#" name="updateCLnotes" >
            update call_lists_users
            set notes = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#url.IndivNote#">
            WHERE   UsersID = <cfqueryparam value="#val(url.userid)#" cfsqltype="cf_sql_integer">
                and CallListsId = <cfqueryparam value="#val(listfirst(url.callListId))#" cfsqltype="cf_sql_integer">
        </cfquery>

2 个答案:

答案 0 :(得分:2)

你的问题是这样的。你正在对actUpdateClIndivNote.cfm进行POST:

$.ajax({
         type: 'POST',

但是该文件需要URL中的值:

  • url.IndivNote
  • url.userid
  • url.callListId

如果你按照charlie的建议并转出FORM范围,你应该看到IndivNote,userid和callListId的条目。如果你转出URL范围,它应该是空的(或者至少不包含那些你试图引用的值)。

将您的AJAX请求从type = POST更改为type = GET。或者更改您的CFM / CFC以期望表格范围中的值而不是URL范围(即#form.IndivNote#等)。

答案 1 :(得分:2)

你需要

'&amp; IndivNote'+ thisindivnote
'&amp; IndivNote ='+ thisindivnote

值得注意的是,我会<cfparam>您的预期值来设置调试的默认值。然后你可以把它们带走看看问题。您还可以添加转储以转储URL /表单范围,然后在Chrome开发工具中检查重放XHR请求中的那些。