首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从CFFUNCTION传递JSON

如何从CFFUNCTION传递JSON
EN

Stack Overflow用户
提问于 2015-03-30 13:10:42
回答 1查看 911关注 0票数 2

我是JSON的新手,实际上是Javascript。

在我的javascript上,我有:

代码语言:javascript
复制
function signin(var1,var2) {
Signin('login.htm?var1=' + var1 + '&var2=' + var2);
}

function skypeme(var1, var2) {
    $.ajax({
        url: "skypeme.cfc",
        dataType: "json",
        data: {a:var1, b:var2},
        success: function(userData) {
            if(userData.LOGIN == 'true' && userData.ID!='') {
                window.location = 'skype:'+userData.ID+'?chat'; 
            }
            else {
                signin(var1,var2);
            }
        }
    });
}

在我的skypeme.cfc上:

代码语言:javascript
复制
<cfcomponent output="false"> 
<cffunction name="cfskypeme" access="remote" returnformat="JSON" output="false"> 
<cfargument name="a" required="true"> 
<cfargument name="b" required="true">  
<cfset var stReturn = structNew()>
<cfset stReturn.LOGIN=false>
<cfset stReturn.ID="">

if user login
    check database for skypeid
        <cfif skypelist.recordcount eq 1>
           <cfset stReturn.LOGIN=true>
           <cfset stReturn.ID=skypelist.skype>
        </cfif>
        <cfreturn SerializeJSON(stReturn)>
if user not login
    <cfreturn SerializeJSON(stReturn)>

</cffunction> 

</cfcomponent>

如果用户已经登录,请检查数据库。如果找到skype id,就启动skype,如果没有,什么也不做。没有错误,但skype无法启动。

从cffunction传递JSON值以便在javasctipt端执行的正确方法是什么?请帮帮忙。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-04-17 04:49:38

有几个问题:如果skypeme.cfc返回200OK(HTML头),ajax调用的成功部分将始终执行,因此返回"false“实际上将返回字符串"false",并且将执行成功。您应该做的是始终返回一个JSON字符串,并使格式始终相同(还有,为什么要使用query对象?使用结构):

代码语言:javascript
复制
<cfcomponent output="false"> 
    <cffunction name="cfskypeme" access="remote" returnformat="JSON" output="false"> 
        <cfargument name="var1" required="true"> 
        <cfargument name="var2" required="true">  
        <cfset var stReturn = structNew()>
        <cfset stReturn.LOGIN=false>
        <cfset stReturn.ID="">

            <cfif user login logic>
                <cfquery name="skypelist"> <!---check db for skypeid--->
                </cfquery>
                <cfif skypelist.recordcount eq 1>
                    <cfset stReturn.LOGIN=true>
                    <cfset stReturn.ID=skypelist.skype>
                </cfif>
            </cfif> <!--- end login logic --->

        <cfreturn SerializeJSON(stReturn)>
    </cffunction> 
</cfcomponent>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29338790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档