Javascript函数没有返回值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript函数没有返回值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3356字,纯文字阅读大概需要5分钟。
内容图文
![Javascript函数没有返回值](/upload/InfoBanner/zyjiaocheng/765/e31837c26cec4442bc290d1fe8bc6872.jpg)
我用以下代码调用函数:
var resultz = nsEditor.updateStringCall(debtID, column2Change, value2Change, 4, 10);
正在调用的函数但不返回值
updateStringCall: function(pdebtID, pcolumn2Change, pvalue2Change, pmin, pmax){
try {
var resultz2 = 0;
$.ajax({
type: "POST",
url: "Components/MintLibraries.cfc",
dataType: "json",
cache: false,
data: {
method: 'StringUpdate',
val2Change: pvalue2Change.trim(),
debtID: pdebtID,
column2Change: pcolumn2Change,
greaterThan: pmin,
lesserThan: pmax,
returnFormat: "json"
},
success: function(response) {
resultz2 = 1;
return resultz2;
}, //end done
error: function(jqXHR, textStatus, errorThrown){
resultz2 = 0;
return resultz2;
}); //end ajax call
} catch (e) {
resultz2 = 0;
return resultz2;
} //end trycatch
},//结束updateStringCall
此函数使用.ajax调用coldfusion cfc方法StringUpdate:
<cffunction name="StringUpdate" access="remote" output="false" returntype="any" >
<cfargument name="val2Change" type="string" required="true" />
<cfargument name="debtID" type="string" required="true" />
<cfargument name="column2Change" type="string" required="true" />
<cfargument name="greaterThan" type="numeric" required="false" />
<cfargument name="lesserThan" type="numeric" required="false" />
<cfset var debt2Pass = int(val(arguments.debtID)) />
<cfset var updQuery = "" />
<cfset var retValue = 0 />
<cfset var iVal = 0 /><cfset var valError = '' />
<cftry>
<cfquery name="updQuery" datasource="#application.datasource#" result="qResults" >
Update dmf set #arguments.column2Change# =
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.val2Change#"/>
where DebtID =
<cfqueryparam cfsqltype="cf_sql_smallint" value="#arguments.debtID#"/>
</cfquery>
<cfset retValue = 1 />
<cfcatch type="Any" >
<cfset thrown = ThrowCFError(405,'debug', 'Error updating ' & arguments.DebtID,arguments.val2Change & ', ' & arguments.debtID & ',' & arguments.column2Change) />
<cfset retValue = 0 />
</cfcatch>
</cftry>
<cfreturn retValue />
</cffunction>
查询成功运行但js函数未返回值(显示为未定义).即使它出现错误,我也认为我已经足够考虑到这一点,至少得到一个返回值.
想法?
解决方法:
该函数未返回值,因为方法中的返回值嵌入在回调函数中.它们只是从那些回调中返回,而不是从主函数返回.例如,考虑一下你的“成功”回调:
success: function(response) {
resultz2 = 1;
return resultz2;
}
这个返回只是从成功函数返回…它没有冒泡到你的updateStringCall函数.
它必须以这种方式工作的原因是因为ajax调用是异步的.当请求在后台发生时,您的方法立即返回.因此,为了获得返回值,您必须传入一个在它准备就绪时可以访问该值的回调,然后从ajax回调中调用回调而不是返回值.
所以将方法定义更改为:
// Note I added a "callback" parameter
function(pdebtID, pcolumn2Change, pvalue2Change, pmin, pmax, callback) { ... }
然后在你的ajax回调中,调用它而不是返回一个值:
success: function(response) {
resultz2 = 1;
callback(resultz2);
},
error: function(jqXHR, textStatus, errorThrown) {
resultz2 = 0;
callback(resultz2);
});
最后,在调用此方法时传入回调:
nsEditor.updateStringCall(debtID, column2Change, value2Change, 4, 10, function(resultz) {
// Do something with resultz
});
最后要注意的是,如果要在那里进行毯子try / catch,你应该改变它以使用回调:
catch (e) {
resultz2 = 0;
callback(resultz2);
}
但实际上,我建议完全接受尝试/捕获.我看不出这可能对你有什么帮助.它只会隐藏已经具有更好的错误处理结构的代码的实际问题.我怀疑你只是在那里调试这个返回问题,但如果已经存在,那就把它拿出去吧.
这是事件驱动的函数式编程世界!这是javascript中一种非常常见的结构.
内容总结
以上是互联网集市为您收集整理的Javascript函数没有返回值全部内容,希望文章能够帮你解决Javascript函数没有返回值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。