我有jquery使用ajax / json来获取元素ID,然后点击:
[System.Web.Services.WebMethod]
public static string EditPage(string nodeID)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(Global.conString))
using (SqlCommand cmd = new SqlCommand("contentPageGetDetail", con))
{
cmd.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = Global.SafeSqlLiteral(nodeID, 1);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
}
if (dt.Count > 0)
{
string pageTitle = dt.Rows[0]["Title"].toString();
string contentID = dt.Rows[0]["ContentID"].toString();
return pageTitle, contentID, nodeID;
}
else
{
return "Failed";
}
}
当需要返回时,我想从存储过程返回的所有内容返回到成功部分中的jquery方法,并在文本字段中设置隐藏字段,下拉值和标题。
在jQuery中我尝试使用“pageTitle”,但它未定义。我需要做什么jQuery方面来获取返回的内容并在显示表单之前填充Web表单中的字段?
答案 0 :(得分:12)
您需要创建一个结构或类来返回:
public struct TheStruct
{
public string pageTitle;
public int contentID,
public int nodeID;
}
[System.Web.Services.WebMethod]
public static TheStruct EditPage(string nodeID)
{
<your code here>
var result = new TheStruct();
result.pageTitle = "Test";
result.contentID = 1;
return result;
}
如果你通过:
contentType: "application/json; charset=utf-8",
在AJAX调用中,您将获得一个JSON回复,您可以解析它:
var obj = jQuery.parseJSON(webserviceReply);
alert(obj.pageTitle);
答案 1 :(得分:2)
public class stuff {
string pagetitle;
string contentID;
string nodeID;
}
[System.Web.Services.WebMethod]
public static stuff EditPage(string nodeID) {
... get the stuff
stuff returnme = new stuff();
returnme.pagetitle = ...
returnme.contentid = ...
return returnme;
}
==== jquery方: 假设您正在使用jquery的AJAX调用,请执行以下操作:
.ajax({ type: "GET", url: "./return.asmx", async: true, dataType: "xml",
success: function (respons, status) {
$(respons).find("WebServiceCallName stuff pagetitle").text();
}});
您需要直接查看webservice输出(只是导航到它就像是一个网页),以确保您的jQuery选择器是正确的。
答案 2 :(得分:1)
如果要使用从jquery返回的字符串,请尝试:
success: function(msg) {
alert(msg.d);
}
msg.d将保存您从webservice调用返回的字符串。如果要返回多个字符串,请尝试在它们之间添加预定义字符串,并在jquery成功函数中将它们拆分。像:
yourfirststring||@@||yoursecondstring||@@||yourthirdstring
var strings = msg.d.split("||@@||");