Return Json-Objekt aus Asp.net webMethod zum Ajax-call
Ich habe folgenden Ajax call-Methode und Die asp.net webmethod.
Meine asp.net Funktion ist wieder einige Werte, die ich brauche, die wieder im Ajax-Aufruf ..
Ich habe versucht, viele Dinge, aber nicht geglückt ist, noch.
AJAX-CALL
<script type="text/javascript">
$(document).ready(function () {
//Add the page method call as an onclick handler for the control.
$("#<%=ddlEmailTemplate.ClientID%>").change(function () {
debugger;
var myparam = $("#<%=ddlEmailTemplate.ClientID%>").val(); //id name for dropdown list
$.ajax({
type: "POST",
url: "FileTax.aspx/ddlEmailTemplate_SelectedIndexChanged",
data: '{param:"' + myparam + '"}',
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data.d)
}
});
});
});
</script>
WebMethod asp.net
Aktualisiert, nachdem Sie Ihre Antwort
[WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)]
public static string ddlEmailTemplate_SelectedIndexChanged(string param)
{
string subject;
string Description;
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ForMyTaxConnectionString"].ConnectionString))
{
con.Open();
DataSet ds = new DataSet();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Spo_ShowEmailTemplateContent";
cmd.Parameters.Add(new SqlParameter("@Tid", SqlDbType.Int)).Value = Convert.ToInt32(param);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(ds);
con.Close();
da.Dispose();
}
if (ds.Tables[0].Rows.Count > 0)
{
DataRow dr = ds.Tables[0].Rows[0];
subject = Convert.ToString(dr["TemplateSubject"]);
Description = Convert.ToString(dr["TemplateDescription"]);
}
}
}
return JsonConvert.SerializeObject(new { subject = subject, description = Description });
//return subject ;
Haben Sie überprüft, in der success Funktion, welche Daten bietet
Ich bin nicht in der Lage, etwas zurückgeben von webmethod-also der Erfolg ist null
Sie müssen
Aber wie kann ich den Rückgabewert Thema hier ? das ist das Problem
alert(data);
Ich bin nicht in der Lage, etwas zurückgeben von webmethod-also der Erfolg ist null
Sie müssen
dataType:'JSON'
als Sie erwarten json Ihre Daten ein und überprüfen Sie alert(data.subject)
Aber wie kann ich den Rückgabewert Thema hier ? das ist das Problem
JsonConvert.SerializeObject(new { subject = subject, description = Description })
hier, die Sie senden-Klasse als Json-Objekt, welches empfangen wird, in Daten
InformationsquelleAutor serious coder | 2017-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gehören
using Newtonsoft.Json;
CS
HTML
Jquery
InformationsquelleAutor RonyLoud
Rückgabe eines JSON-Objekts müssen Sie die Serialisierung Ihre Antwort. In Ihrer Methode etwas zurückgeben, wie
return JsonConvert.SerializeObject(new { subject = subject, description = Description });
müssen Sie eineusing
- Anweisung am Anfang fürusing Newtonsoft.Json;
.Um Fehler zu vermeiden, die über die Verwendung nicht zugewiesener Variablen, die Sie benötigen, um geben Sie Ihre
subject
undDescription
Variablen Startwerte wie `string subject = "". So, wenn Sie nicht bekommen, einen neuen Wert zu, Sie kehren mit leeren Saiten.Erstellen, anstatt ein generisches Objekt von
new { subject = subject, description = Description }
könnten Sie in der Tat erstellen Sie eine Klasse mit den Eigenschaften:Und dann serialisieren die gleiche Weise vor:
JsonConvert.SerializeObject(new EmailTemplate{ subject = subject, description = Description });
Aber wenn Sie nicht gehen, um zu verwenden, dass die model-Klasse irgendwo anders, es ist nicht notwendig.Schließlich in Ihrem JavaScript-Sie sollten in der Lage sein, um Zugriff auf die Daten wie diese:
Ich aktualisiert meine Antwort.
InformationsquelleAutor Tyler Jennings
Können Sie
return Json(Your_object)
Funktion.Aber Sie eine änderung an der Signatur der Methode zu
return IHttpActionResult
.Ein Modell, um die Werte zurückgeben.
Zum Beispiel:
Dann Ihr return-Anweisung Aussehen wird
IHttpActionResult ist für WebAPI, nicht Webmethods innerhalb von aspx-Seiten. Diese Antwort spricht die falsche Technik
InformationsquelleAutor Salkony