1

Web ユーザー コントロールがあり、そこから Web サービスを呼び出したいと考えています。私の主な動機は何ですか:

1.高度な検索用のWebユーザーコントロールを作成しています。そのために、バインドされたフィールドとボタン[編集、削除]をグリッドビューに動的に追加しています。2.今、私はajaxを使用して編集と削除を行っています(最初にグリッドのすべての列をクリアしてから追加するために、バインドされたフィールドとボタンを動的に追加していることをすでに述べたので、このアプローチを使用する特定の理由があります新しいもの.ボタンのクリックが発生すると、ページがポストバックされ、これによりボタンがグリッドから消えるので、そのためにJsonを使用したい)

これがグリッドの私のコードです::

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CellPadding="4"
                BorderWidth="1px" ForeColor="#333333" GridLines="None">
                <AlternatingRowStyle BackColor="White" />
                <FooterStyle BackColor="#990000" ForeColor="White" Font-Bold="True" />
                <HeaderStyle Height="30px" BackColor="#990000" Font-Bold="True" ForeColor="White" />
                <PagerStyle ForeColor="#333333" HorizontalAlign="Center" BackColor="#E2E2E2" />
                <RowStyle CssClass="test" BackColor="#E2E2E2" Height="25px" BorderWidth="1px" ForeColor="#333333" />
                <SelectedRowStyle BackColor="#E2E2E2" Font-Bold="True" ForeColor="Navy" />
                <SortedAscendingCellStyle BackColor="#FDF5AC" />
                <SortedAscendingHeaderStyle BackColor="#4D0000" />
                <SortedDescendingCellStyle BackColor="#FCF6C0" />
                <SortedDescendingHeaderStyle BackColor="#820000" />
            </asp:GridView>

Json呼び出しのコードは次のとおりです

$('.DeleteButton').live('click', function () {
        alert('hellllo');
        $.ajax({
            url: '<%=ResolveUrl("~/Control/WebService/WebService.asmx/HelloWorld") %>',
            data: "{ }",
            dataType: "json",
            type: "POST",
            contentType: "application/json;charset=utf-8",
            success: function () {
                alert('hi;');
            },
            error: function () {
                alert('Record could not be deleted. \n Please try again later. hye');
            },
            failure: function () {
                alert('Record could not be deleted. \n Please try again later. hello');
            }
        });
    });

私は常に次のエラーを受け取ります:

500 内部エラー この問題から抜け出すために私を助けてください。私は過去 2 日間から立ち往生しています。

4

3 に答える 3

0

私は以下のように解決しました:

Jqueryコードは次のとおりです。

$(document).ready(function () {
$('.DeleteButton').live('click', function (e) {
    var td = $(this).parent('td').parent('tr');
    if (confirm('Do you want to delete this record?')) {
        var Index = $(this).attr('id');
        var pos = Index.indexOf("_");
        var position = Index.indexOf("_");
        while (pos > -1) {
            pos = Index.indexOf("_", pos + 1);
            if (pos > -1) {
                position = pos;
            }
        }
        Index = Index.substr(position + 1);

        var Id = $(this).attr('alt');
        var TableName = $('[id$=hdfTableName]').val();
        var PrimaryKey = $('[id$=hdfPrimaryKey]').val();

        $.ajax({
            type: "POST",
            url: "Search.aspx/DeleteRecord",
            data: "{ 'Id': '" + Id + "','TableName':'" + TableName + "','PrimaryKey':'" + PrimaryKey + "' }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d == '1') {
                    td.hide();
                    $('.lblMessage').addClass("SuccessMessage");
                    $('.lblMessage').text('Record is deleted sucessfuly.');
                    $('.lblMessage').delay('5000').fadeOut('10000');
                } else {
                    $('.lblMessage').addClass("ErrorMessage");
                    $('.lblMessage').text('There is some error, while deleting the record.');
                    $('.lblMessage').delay('5000').fadeOut('10000');
                }
            }
        });
    }
});
$('.EditButton').live('click', function (e) {
    var Id = $(this).attr('alt');
    window.location.href = 'Default.aspx?id=' + Id + '';
});

});

そして、私は以下のようにページからWebメソッドを呼び出しました:

[WebMethod]
public static string DeleteRecord(string Id, string TableName, string PrimaryKey)
{
    String result = "";
    try
    {
        Id = "'" + Id + "'";
        clsSearch objSearch = new clsSearch();
        result = objSearch.DeleteRecord(TableName, PrimaryKey, Id);
        result = "1";
    }
    catch (Exception ex)
    {
        result = ex.Message;
    }
    return result;
}

ところで、あなたの返信に感謝します.....

于 2013-03-26T09:23:43.743 に答える
0

Chrome ブラウザーを使用してデバッグしている場合は、次の手順を実行します。

  1. F12を押して開発者(名前が間違っている場合は修正してください)パネルを開きます
  2. タブを [ネットワーク] タブに設定します
  3. メソッドを呼び出す

内部サーバー エラー 500 が発生した場合、下部のどこかに赤いフォントのレコードが表示されます。そこに記載されているURLでデバッグできます。そこにある情報は、応答情報も提供します。

さらに、Web サービスに対してアクティブ化されたビジュアル スタジオ デバッグを使用して、サービスのデバッグを試みることができます。次に、Web サービスを呼び出して、例外がキャッチされるかどうかを確認します。

于 2013-03-20T11:35:52.173 に答える
0

500 内部エラー - 私が推測できることから:
使用しないでください

var html = '<%=ResolveUrl("~/Control/WebService/WebService.asmx/HelloWorld") %>';

代わりに次を使用します。

var html= '<%=ResolveUrl("full path /Control/WebService/WebService.asmx/HelloWorld") %>';

また

var html = '<%=ResolveUrl("../../Control/WebService/WebService.asmx/HelloWorld") %>';
于 2013-03-20T11:03:18.417 に答える