2017-09-11 1 views
2

저는 PHP 개발자이며 최근에 ASP로 전환했습니다. 웹 서비스에 데이터를 보내고 거기에 도달하려고하지만 솔루션을 찾을 수 없습니다. 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

왜 이름 대신 id를 통해 json으로 보내지 않습니까? var id = $ ("input_Id")와 같은 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); 

      } 



     }); 

    } 

지금 클래스를 생성하고 두 개의 공용 변수를 생성하고 웹 서비스 클래스에서 클래스 객체를 생성하여 두 변수를 호출합니다.

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-WEB SERVICE 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>

WEB SERVICE-

[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); // firse : 객체를 "mProjects"로 serialize // 가장 중요한 두 문장은 결과를 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> 
Codebehind가에

(.cs)는 :

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

var j=JsonConvert.SerializeObject(obj); 

난 당신이 웹 양식에서 작업하는 것으로 가정했다.

+0

웹 양식에없는 service.asmx에서 가져와야합니다. –

0

당신은 ASP에 $ 아약스 JSONP를 사용합니다 ({ URL을 '당신의 경로', 데이터 형식 : 'JSONP', 데이터 : {....} });

+0

귀하의 요점은 무엇입니까? –

관련 문제