2017-09-11 87 views
2

我是php開發人員,最近切換到asp,我想發送數據到web服務併到達那裏,但我無法想出一個解決方案。 在php中,如果你想訪問數據的後端處理目的,我們只需使用 .Serialize();方法,如何使用Json發送數據並獲取在asp.net服務

例如:

<form id="loginForm"> <input class="form-control" name="UserEmail" placeholder="Email" type="email" required=""/> </form>

和在JScript功能,我們將串行化的形式,例如:

var data = $("#loginForm").serialize(); 

和在過程側I可以通過輸入名稱調用它,但在asp.net中,我無法做到這一點,我可能會錯過一些東西,或者asp.net不支持這種方法嗎?我不知道請程序員幫我解決。

+1

您是使用Asp.Net webforms還是Asp.Net MVC?你可以在兩個框架中使用[Newtonsoft JSON](https://www.newtonsoft.com/json)庫。同時向我們展示一些Asp.Net代碼,您如何嘗試構建,以便有人可以快速展示解決問題的方法。 –

+2

你爲什麼不通過json通過id發送它們而不是名字?我的意思是你可以嘗試通過id發送它們,比如var id = $(「input_Id」)。val();然後堆疊它們? – khan

+1

Siva Gopal親愛的,我確定。發佈完整的代碼會浪費時間,這會讓問題更加冗長,我只想知道如何獲取服務中的數據並使用它們。 –

回答

2

您應該使用Id屬性並使用stingify()方法而不是序列化。

HTML

<input class="form-control" Id="UserEmail" placeholder="Email" type="email" required=""/> 

JS

function YesFunction() { 


     var email= $("#UserEmail").val(); 

     var d= []; 
     d.push(email); 

     var jsndta = JSON.stringify({ d: d}); 
        $.ajax({ 
      type: "POST", 
      url: "wbservices/SearchSchoolInfoAndInventory.asmx/Searchschoolbesicinfo", 
      data: jsnDta, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (r) { 
       var rtnData = r.d; //all returned data... 
       var respDta = []; 
       $.map(rtnData, function (item, index) { 
        var j = [ 
         item.status, 
         item.msg, 
        ]; 
        respDta.push(j); 
       }); 
       $.each(respDta, function (key, value) { 
        var status = value[0]; 
        var msg = value[1]; 


        if (status == true) { 
         table.html(msg); 
        } else { 

        } 
       }); //1st out loop ends here... 


      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       // $("#responseMovDetails").html(jqXHR + textStatus + errorThrown); 
       alert("error while loading Purchases Head" + jqXHR + textStatus + errorThrown); 

      } 



     }); 

    } 

現在創建一個類,並創建兩個公共變量,並通過Web服務類創建的類對象調用這兩個變量。

public class RequestResponse 
    { 
     public bool status { get; set; } 
     public string msg { get; set; } 
    } 
[WebMethod] 
     public List<RequestResponse>ActivatePBudget(List<string> d) 
     { 
      RequestResponse r = new RequestResponse(); 
      List<RequestResponse> list = new List<RequestResponse>(); 

      string Email= d[0].ToString(); 

//establish connection. I have established connection in separate class. 
      DbCon dbcon = new DbCon(); 
      string constr = dbcon.dbconnection(); 
      SqlConnection con = new SqlConnection(constr); 
      try 
      { 
       con.Open(); 
       string CheckEmail = "select * from Table_Name where Email= @m"; 
       SqlCommand getcmd= new SqlCommand(CheckEmail,con); 
       getcmd.Parameters.AddWithValue("@m", Email); 
       SqlDataReader reader=getbhidcmd.ExecuteReader(); 

       if(reader.Read()) 
       { 
        r.status = true; 
        r.msg = "Valid User Or Redirect user to another page"; 
        list.Add(r); 
       reader.Close(); 
       } 
       else 
       { 

       reader.Close(); 
        r.status = false; 
        r.msg = "Invalid Email"; 
        list.Add(r); 

       } 

      } 
      catch (Exception ex) 
      { 
       r.status = false; 
       r.msg = "Invalid Email" + ex.ToString(); 
       list.Add(r); 
      } 
      finally 
      { 
       con.Close(); 
      } 
      return list; 
     } 
+0

我讀過你的代碼,在我看來,這就是我所缺乏的,通過調用參數和響應類來獲取數據。 –

+1

它會工作我已經嘗試過,然後張貼。 – khan

+0

是的,親愛的,它完美的作品。接受,謝謝 –

0

HTML + JS +網絡服務 JS:

<script type="text/javascript"> 
 
    function getProject() { 
 
      var data = ""; 
 
      var strUser = "<%=nowUser%>"; 
 
      $.ajax({ 
 
       type: 'post', 
 
       url: '<%=AppRoot%>main/BackWebservice.asmx/LoadProjects', 
 
       async: true, 
 
       dataType: 'json', 
 
       data: { strAdmin: strUser }, 
 
       success: function (result) { 
 
        var json = eval(result); //數組 
 
        var optionstring = ""; 
 
        $.each(json, function (index, item) { 
 
         //循環獲取數據  
 
         var name = json[index].Name; 
 
         var idnumber = json[index].ID; 
 
         optionstring += "<option value=\"" + idnumber + "\" >" + name + "</option>"; 
 
        }); 
 
        $("#userProject").html("<option value=\"" + 0 + "\"'>所有項目</option> " + optionstring); 
 
       }, 
 
       error: function (XMLHttpRequest, textStatus, errorThrown) { 
 
        alert(XMLHttpRequest.status); 
 
        alert(XMLHttpRequest.readyState); 
 
        alert(textStatus); 
 
       } 
 
      }); 
 
     } 
 
    </script>

網絡服務

[WebMethod] 
public void LoadProjects(string strAdmin) 
{ 
    List<Project> mProjects = new List<Project>(); 
    string stuJsonString = ""; 
    bool bManager = false; 
    using (SqlConnection connection1 = new SqlConnection(Cfg.SqlServer)) 
    { 
     connection1.Open(); 
     string mstrsql1 = "SELECT * FROM ShuiUser where 賬號='" + strAdmin + "'"; 
     using (SqlCommand CMD1 = new SqlCommand(mstrsql1, connection1)) 
     { 
      SqlDataReader DR1 = CMD1.ExecuteReader(); 
      while (DR1.Read()) 
      { 
       if (DR1["管理"].ToString() == "1") 
       { 
        bManager = true; 
       } 
      } 
      DR1.Close(); 
     } 
     connection1.Close(); 
    } 
    using (SqlConnection connection2 = new SqlConnection(Cfg.SqlServer)) 
    { 
     connection2.Open(); 
     string mstrsql2 = ""; 
     if (bManager) 
     { 
      mstrsql2 = "select * from ShuiProject"; 
     } 
     else 
     { 
      mstrsql2 = "select a.* from ShuiProject a,ShuiUser b where a.[編號]=b.[項目] AND b.[賬號]='" + strAdmin + "' "; 
     } 
     using (SqlCommand CMD2 = new SqlCommand(mstrsql2, connection2)) 
     { 
      SqlDataReader DR2 = CMD2.ExecuteReader(); 
      while (DR2.Read()) 
      { 
       Project mProject = new Project(); 
       mProject.ID = Convert.ToInt16(DR2["編號"]); 
       mProject.Name = DR2["名稱"].ToString(); 
       mProjects.Add(mProject); 
      } 
      DR2.Close(); 
     } 
     connection2.Close(); 
    } 

    stuJsonString = JsonConvert.SerializeObject(mProjects); 
    //主要是下面的兩句 The most important two sentences 
    Context.Response.Write(stuJsonString); 
    Context.Response.End(); 
} 
+1

你如何將結果返回給Js函數? – khan

+0

我同意@khan如何將結果/數據發送回Jscript –

+0

stuJsonString = JsonConvert.SerializeObject(mProjects); //首先:使對象「mProjects」序列化 //第二:最重要的兩個句子,將結果發送給js Context.Response.Write(stuJsonString); Context.Response.End(); – tangbao

0

ASPX:

<form runat=」server」 id="loginForm"> 
<asp:Textbox runat=」server」 cssClass="form-control" id="UserEmail" placeholder="Email" TextMode=」email」 required=""/> 
</form> 

在代碼隱藏(的.cs):

using Newtonsoft.Json; 
var obj=new { 
Email= UserEmail.Text.Trim() 
}; 

var j=JsonConvert.SerializeObject(obj); 

我假設你在的WebForms工作。

+0

沒有親愛的我需要讓service.asmx不在webforms上。 –

0

必須在ASP中使用JSONP $阿賈克斯({ 網址: '你路徑', 數據類型: 'JSONP', 數據:{....} });

+0

你的觀點到底是什麼? –

相關問題