2015-03-30 1 views
2

Я новичок в JSON, на самом деле Javascript. Я действительно нашел код у кого-то и попытаюсь реализовать это для того, что я пытаюсь сделать.Как передать JSON из CFFUNCTION

На моем 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:

<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, поднимите skype, если ничего не сделайте. Но то, что происходит, когда я вызываю функцию skypme() из моего html, ничего не происходит. Нет ошибки, но скайп не запускается.

Каков правильный способ передачи значения JSON из cffunction, чтобы он мог выполняться на стороне javasctipt? Я пробовал много способов, но просто не могу заставить его работать. Пожалуйста помоги. Спасибо.

+0

Нет, ваш Javascript Ajax запрос ожидает JSON, вы должны вернуть json к нему, а не javascript. –

+0

в вашем skype me.cfc вам не нужны 'cfoutput' или' # 'в любых ваших операторах' cfif' или 'cfreturn'. –

+1

'' является проблемой. Нет ничего, чтобы предположить, что эти переменные фактически существуют. –

ответ

0

Пара вопросов: Ваша успешная часть вашего вызова ajax будет всегда выполняться, если skypeme.cfc возвращает 200 OK (html-заголовок), поэтому возврат «false» фактически вернет строку «false», и успех будет выполнить. То, что вы должны сделать, это всегда возвращает строку JSON, и имеет формат всегда одинаковый (и почему вы используете объект запроса использовать структуру?):

<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

Я обновил его в соответствии с вашим предложением. Тем не менее, я все еще не получаю ответа от cfc – Jack

+0

Это поможет, если вы разместите фактический код. Моя рекомендация будет возвращать значение cfc независимо от того, какие значения передаются – rodmunera

 Смежные вопросы

  • Нет связанных вопросов^_^