1

ajax/json を使用して要素 ID を取得し、ヒットする jquery があります。

[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」を使用しようとしましたが、未定義になりました。フォームを表示する前に、返されたものを取得して Web フォームのフィールドに入力するには、jQuery 側で何をする必要がありますか?

4

3 に答える 3

13

以下を返すには、構造体またはクラスを作成する必要があります。

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);
于 2011-03-03T19:14:35.330 に答える
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();
}});

jQuery セレクターが正しいことを確認するには、Web サービスの出力を直接確認する必要があります (Web ページであるかのように移動するだけです)。

于 2011-03-03T19:20:53.157 に答える
1

jqueryから返す文字列を使用する場合は、次を試してください。

success: function(msg) {
    alert(msg.d);
}

msg.dは、Webサービス呼び出しから返す文字列を保持します。複数の文字列を返したい場合は、それらの間に事前定義された文字列を追加し、jquery成功関数でそれらを分割してみてください。お気に入り:

 yourfirststring||@@||yoursecondstring||@@||yourthirdstring

 var strings = msg.d.split("||@@||");
于 2011-03-03T19:16:44.907 に答える