2017-07-31 122 views
0

我一直試圖去函數後面的代碼,以獲得兩個變量加密以返回查詢字符串。但我一直沒有成功。第一次嘗試Ajax。從Ajax函數調用代碼背後的c#函數

所以,在後面的代碼我有這樣的方法:

[WebMethod] 
public static string EncritaDados(string str, string str2) 
{ 
    return Verificacoes.EncryptString(str)+";"+ Verificacoes.EncryptString(str2); 
} 

在我的ASP我我有這個(實施Facebook登錄):

function testAPI() { 
     console.log('Welcome! Fetching your information.... '); 
     FB.api('/me?fields=name,email', function (response) { 
      console.log('Successful login for: ' + response.name); 
      Ajax(response.email, response.name) 
     }); 
    } 

    function Ajax(expressao1, expressao2) { 
     $.ajax({ 
      url: 'login.aspx/EncritaDados', 
      method: 'post', 
      contentType:'application/json', 
      data: '{str: ' + expressao1 + ', str2: ' + expressao2 + '}', 
      dataType:'json', 
      success: function (resp) { 
       var strings = resp.d.split(";"); 
       window.location.href = 'login.aspx?email=' + strings[0] + '&nome=' + strings[1]; 
      }, 
      error: function() { } 
     }) 
    } 

試圖阿賈克斯之前,它會工作,內部消除嘗試去後面的代碼。我有這樣的:

function testAPI() { 
     console.log('Welcome! Fetching your information.... '); 
     FB.api('/me?fields=name,email', function (response) { 
      console.log('Successful login for: ' + response.name); 
      window.location.href = 'login.aspx?email=' + response.email+ '&nome=' + response.name; 
     }); 
    } 

我現在正在撓我的腦袋。誰能幫我這個?我會很感激。

編輯:我得到了它這樣的:

function testAPI() { 
      console.log('Welcome! Fetching your information.... '); 
      FB.api('/me?fields=name,email', function (response) { 
       console.log('Successful login for: ' + response.name); 
       Ajax(response.email, response.name); 
      }); 
     } 

     function Ajax(expressao1, expressao2) { 
      var request = { email: expressao1, nome: expressao2 } 
      $.ajax({ 
       url: 'login.aspx/EncritaDados', 
       method: 'post', 
       contentType: 'application/json', 
       data: JSON.stringify(request), 
       dataType: 'json', 
       success: function (resp) { 
        var strings = resp.d.split(";"); 
        window.location.href = 'login.aspx?email=' + strings[0] + '&nome=' + strings[1]; 
       }, 
       error: function (error) { alert(error.status); } 
      }) 

而且在後面的代碼:

[WebMethod] 
public static string EncritaDados(string email, string nome) 
{ 
    return Verificacoes.EncryptString(email) + ";" + Verificacoes.EncryptString(nome); 
} 

所以,基本上,我做了一些細微的變化,但它並沒有做什麼,它應該因爲數據字符串不好形成。但我按照JSON.stringify的建議格式化了它,並且它工作正常。

回答

1

您的JavaScript錯誤。 resp.d而不是resp.data:

function testAPI() { 
     console.log('Welcome! Fetching your information.... '); 
     FB.api('/me?fields=name,email', function (response) { 
      console.log('Successful login for: ' + response.name); 
      Ajax(response.email, response.name) 
     }); 
    } 

    function Ajax(expressao1, expressao2) { 
     var requestObject = { str : expressao1, str2 : expressao2 } 
     $.ajax({ 
      url: 'login.aspx/EncritaDados', 
      method: 'post', 
      contentType:'application/json', 
      data: JSON.stringify(requestObject), 
      dataType:'json', 
      success: function (resp) { 
       var strings = resp.data.split(";"); 
       window.location.href = 'login.aspx?email=' + strings[0] + '&nome=' + strings[1]; 
      }, 
      error: function() { } 
     }) 
    } 
+0

RequestObject對象在哪裏?事情是,我想要這兩個,這是一個名稱和一封電子郵件傳遞給C#方法進行加密,然後返回它們。所以,我不完全有一個對象可以通過。 – taiko

+0

編輯我的響應以包含RequestObject類。你可以任何你想要的名稱命名你的兩個屬性,只要確保在C#類和javascript對象中命名它們相同即可。 –

+0

我似乎無法得到它的工作。我知道它到達了Ajax函數。我在那兒放了一個警報器,它就到了那裏。但似乎只是停在那裏。它似乎沒有進入$ .ajax函數... :( – taiko

相關問題