2017-09-11 60 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

你的观点到底是什么? –

相关问题