2016-08-07 63 views
1

Ich habe dieses modale. in einem Formular-TagWie übergibt man eine Zeichenfolge von Javascript an den Server? und dann erhalten einen Rückgabewert vom Server in asp.net Webforms

<div id="Incoming_Call" class="modal fade" role="document"> 
    <asp:Label runat="server" id="Caller_id" Text="Incoming Call"</asp:Label> 
</div> 

ich den Beschriftungstext ändern möchten, wenn die modale

<script> 
string id = "temporary value"//javascript has this value on clientside. 
// i don't have this value on page load but after some event triggers. 

$('#Incoming_call').on('shown', function(){ 
    id="[email protected]"; 
    var text = '<%= generatestring(id)%>'; 
    $('#<%=Caller_id.ClientID%>').html = id; 
}); 
</script> 

Ich muss zeigen, senden, dass id Variable auf Server-Seite zu einer Funktion generateString() nach der Zeichenfolge geändert hat id="temporary Value" bis id="[email protected]" oder etwas

Dies ist auf der Serverseite.

public string generateString(string id) 
{ 
    id = // does some processing; 
    return id; 
} 

Also, ich möchte eine Variable von JavaScript auf der Server-Seite senden dann hat Server einige Verarbeitung zu tun und den Wert zurück. Die JavaScript-Variable ist zum Zeitpunkt des Ladens der Seite nicht bereit. Also kann ich es nicht innerhalb <%%> diese Tags übergeben und einen neueren Wert erhalten. Es wird nur "temporärer Wert" als String übergeben, nicht der neue Wert.

+0

Ich denke, der einzige Weg, dies zu tun ist, die Seite mit einem neu zu laden Post-Wert oder etwas, oder vielleicht Ajax kann helfen, nur 1 Abschnitt Ihrer Website neu zu laden. Ich wollte dasselbe machen, aber am Ende die Seite neu laden, nachdem ein neuer Wert angekommen ist. – Pedram

+0

müssen Sie die [Request.Form Collection] verwenden (https://msdn.microsoft.com/en-us/library/ms525985 (v = vs90) .aspx) –

+0

ok krank versuchen, dass. – Zawar

Antwort

0

eine serverseitige Methode von JavaScript aufrufen wirklich simple.You dies mit jQuery tun können $.ajax Funktion und eine [WebMethod]

-Code hinter:

protected void Page_Load(object sender, EventArgs e) 
{ 
} 

[System.Web.Services.WebMethod] 
public static string generateString(string id) 
{ 
    System.Diagnostics.Debugger.Break(); 
    return String.Format("Response from server for - {0}.Call time - {1}",id,DateTime.Now.ToString("HH:mm:ss")); 
} 

.ASPX:

<head runat="server"> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      var id = "temporary value"; 

      $("#btnMakeAjaxCall").click(function() { 
       MakeAjaxCall(); 
      }); 

      function MakeAjaxCall() { 
       $.ajax({ 
        type: "POST", 
        url: "AjaxCallExample.aspx/generateString", 
        contentType: "application/json;charset=utf-8", 
        data: '{id:"' + id + '"}', 
        dataType: "json", 
        success: function (data) { 
         var caller = '<%: Caller_id.ClientID %>'; 
         $("#" + caller).text(data.d) 
        }, 
        error: function (errordata) { 
         console.log(errordata); 
        } 
       }); 
      } 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <input type="button" id="btnMakeAjaxCall" value="Make AJAX call" /> 
     <asp:Label ID="Caller_id" runat="server" Text="Incoming Call"></asp:Label> 
    </form> 
</body> 
+0

thnkx es hat funktioniert. Ich musste allerdings auch einen Webservice nutzen. – Zawar

+0

Ich habe auch eine Frage. Wie bekommst du data.d? was ist d? wo hast du es definiert? $ ("#" + Aufrufer) .text (dat.d) – Zawar

+0

'data.d' stammt von Microsofts Implementierung von Webmethoden. Es ist eine Sicherheitsfunktion, den Zugriff auf die Daten über eine Eigenschaft zu erfordern. Sie mussten etwas wählen, sie wählen "d" – Crowcoder

0

Sie können einen Ajax-Aufruf an den Server senden und den zurückgegebenen Wert verwenden. Sie können Ajax aufrufen jedes Mal, wenn das Modal oder Sie Ajax aufrufen, wann immer Sie bereit sind, Ergebnis vom Server, auf diese Weise können Sie Ajax aufrufen und speichern Sie das Ergebnis in einer versteckten Variablen auf der Seite oder etwas anderes bereits definierte Variable und verwenden Sie die Variable in modal.

jQuery-Code, um den Ajax-Aufruf an den Server zu senden Um einen Ajax-Aufruf zu tätigen, müssen Sie einen Verweis auf jQuery auf Ihrer Seite hinzufügen.

$.ajax({ 
     url: "/controller_name/method_name", 
     type: "POST", 
     data: { var1:var1}, 
     success: function (response) { 
      //use response here 

     }, 
     error: function() { 
      alert("Some unexpected error occured. Please try again."); 
     } 
    }); 

Dies ist die Art und Weise Sie erreichen können, was Sie wollen, können Sie uns wissen, falls du auch Hilfe bei der Codierung benötigen.

+0

Ich brauche Hilfe. Wenn Sie mir ein Beispiel geben können – Zawar

+0

Ich benutze Webforms. Was ist der Controller hier. Ich habe Code auf der Masterseite. Patient. und wie soll die Funktion aufgerufen werden? modal.on (angezeigte Funktion() { // hier? }) Wie gibt es den Wert zurück? – Zawar

+0

https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=ajax%20call%20asp.net%20web%20froms http: //www.codedigest.com/Artikel/jQuery/318_Doing_AJAX_with_jQuery_in_ASPNet.aspx – codemirror