none
WCF retorna um JSON que o $.ajax nao processa corretamente RRS feed

  • Pergunta

  • Me deparei com um problema que estou meio perdido de como resolver... bem tenho um serviço em WCF que me gera uma string no formato JSON para a validação usando o jquery.validationengine esse plugin faz uma requisição  GET usando $.ajax nesse serviço ...ate ai funciona beleza...o problema é que minha string de retorno do WCF ({"jsonValidateReturn":["FU_login","Erro","false"]}) não e processada corretamente pelo $.ajax do jquery, fiz um teste criando uma pagina aspx e funcionou corretamente o processamento do json que deveria ficar assim json['jsonvalidadereturn'][0] = FU_login , como faço pra acertar isso no WCF !?

     

    WCF

     [OperationContract]
        [WebInvoke(Method="GET", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json,UriTemplate = "HasFuncionarioEmail/?fieldId={fieldId}&fieldValue={fieldValue}")]
        string HasFuncionarioEmail(string fieldId,string fieldValue); 
    

     

     public string HasFuncionarioEmail(string fieldId,string fieldValue)
        {
          using (riosistemasEntities dr = new riosistemasEntities())
          {
                  
            
            string validateValue = fieldValue;
            string validateId = fieldId;
            string validateError = "Erro";
            string FU_email = fieldValue;
            string[] validateReturn = new string[3];   
    
            dr.ContextOptions.LazyLoadingEnabled = false;
            dr.ContextOptions.ProxyCreationEnabled = false;
            string username = Membership.GetUserNameByEmail(FU_email);
    
            validateReturn[0] = validateId;
            validateReturn[1] = validateError;
            if (string.IsNullOrEmpty(username))
              validateReturn[2] = "true";
            else
              validateReturn[2] = "false";
    
            JavaScriptSerializer serializer = new JavaScriptSerializer();        
            string jsonValidateReturn = serializer.Serialize(new { jsonValidateReturn = validateReturn });
            
    
            return jsonValidateReturn;
          }
    
        }
    


    web config

    <service name="riosistemas_v2.Milestone.Funcionarios.Services.Funcionarios" behaviorConfiguration="riosistemas_v2.Milestone.Funcionarios.Services.FuncionariosBehavior">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" contract="riosistemas_v2.Milestone.Funcionarios.Services.IFuncionarios">
         <identity>
          <dns value="localhost"/>
         </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" name="MEX" contract="IMetadataExchange" />
       </service>
      </services>
    
     <behavior name="riosistemas_v2.Milestone.Funcionarios.Services.FuncionariosBehavior" >
         <serviceMetadata httpGetEnabled="true"/>     
         <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
    


    code behind aspx

     

     string validateValue = Request.QueryString["fieldValue"];
          string validateId = "FU_login";
          string validateError = "Erro";
    
          string[] validateReturn = new string[3];
          validateReturn[0] = validateId;
          validateReturn[1] = validateError;
    
          if (validateValue == "correct@test.com")
            validateReturn[2] = "true";
          else
            validateReturn[2] = "false";
    
          JavaScriptSerializer serializer = new JavaScriptSerializer();
          string jsonValidateReturn = serializer.Serialize(new { jsonValidateReturn = validateReturn });
    
          Response.Clear();
          Response.ContentType = "text/html";
          Response.AddHeader("Content-Length", jsonValidateReturn.Length.ToString());
          Response.Write(jsonValidateReturn);
          Response.End(); 
    

     

    quinta-feira, 4 de agosto de 2011 12:56

Respostas

  • Boas Igor,

    Não sei se pode te ajudar, mas segue o link de 2 posts que escrevi no meu blog sobre o consumo de um serviço Restfull via jQuery 

    parte 1 e parte 2. Neles eu não faço uso do JavascriptSerializer e tambem não retorno uma string. Ao inves disso, eu retorno a lista de objetos mesmo e no cliente eu manipulo o JSON. No primeiro post tem o link para o download do projeto.

     

    Espero ter ajudado.

    Abraços,


    Daniel Torres Coding is fun :)
    sexta-feira, 5 de agosto de 2011 16:32