1

私はこれを見つけるために2日間、どこでもウェブ上で検索してきました. 今のところ、必要なものが見つかりません。私がAJAXで何か奇妙なことをしているからなのか、それとも何なのかはわかりませんが、助けていただければ私の問題です。

複数のページしかない Web サイトを作成しようとしていますが、AJAX と JQuery を使用して 1 つのページがあるように見せかけています。URL は想定どおりに変更されませんが、営業担当者を作成しようとしたり、AJAX をロードしたページを使用してログインしようとすると、機能しません。実行しているように見えますが、コード ビハインドが別のページでヒットすることはないため、実際にはデータ入力を送信しません。次のコードは私の AJAX ページです。

/// <reference path="jquery-1.8.2-vsdoc.js" />
$(document).ready(function () {
$('#ViewAllUsers').click(function () {
    $.ajax({
        type: 'POST',
        url: "/ViewAllUsers(test).aspx",
        success: function (result) {
            var main = $('#Main');
            main.html($('#Main', result).html());
        }
    });
});
$('#Button1').click(function () {
    $.ajax({
        type: 'POST',
        url: "/Login.aspx",
        success: function (result) {
            var main = $('#Main');
            main.html($('#Main', result).html());
        }
    });
});
$('#AddItem').click(function () {
    $.ajax({
        type: 'POST',
        url: "/admin/AddItem.aspx",
        success: function (result) {
            var main = $('#Main');
            main.html($('#Main', result).html());
        }
    });
});
$('#CreateSalesAccount').click(function () {
    $.ajax({
        type: 'POST',
        url: "/admin/CreateSalesAccount.aspx",
        success: function (result) {
            var main = $('#Main');
            main.html($('#Main', result).html());
        }
    });
});
$('#ViewAllOrderHistory').click(function () {
    $.ajax({
        type: 'POST',
        url: "/admin/ViewOrderHistory.aspx",
        success: function (result) {
            var main = $('#Main');
            main.html($('#Main', result).html());
        }
    });
});
});

このコードは、管理ページにとどまりながら、AJAX ボタンを使用して他のページに移動するページである管理ページです。

<%@ Page Title="" Language="vb" AutoEventWireup="true" MasterPageFile="~/Site.Master" CodeBehind="AdminPage.aspx.vb" Inherits="PyriteGoldPresentation.AdminPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<script src="../Scripts/jquery-1.8.2.js" type="text/javascript"></script>
<script src="../Scripts/PyriteGoldAjax.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id = "Main">
    <input type="button" id="ViewAllUsers" value="View All Users" />
    <input type="button" id="AddItem" value = "Add Item" />
    <input type="button" id="CreateSalesAccount" value="Create A Sales Account" />
    <input type="button" id="ViewAllOrderHistory" value="View Order History" />
</div>
</asp:Content>

最後に、セールスマンの作成ページとその背後にあるコードを示します。

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="CreateSalesAccount.aspx.vb" Inherits="PyriteGoldPresentation.CreateSalesAccount"%>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<script src="../Scripts/jquery-1.8.2.js" type="text/javascript"></script>
<script src="../Scripts/PyriteGoldAjax.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="Main">
    <div style="width: 400px; margin-left:auto; margin-right:auto;">
        <div class="row">
            <h2>
                Create Sales Account
            </h2>
        </div>
        <div class="row">
            <span class="column1">
                <asp:Label ID="FirstNameLabel" runat="server" Text="First Name"/>
            </span>
            <span class="column2">
                <asp:TextBox ID="FirstNameTextField" runat="server" Width="137px"/>
            </span>
            <span class="column3">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*Required Field"
                 ControlToValidate="FirstNameTextField"/>
            </span>
        </div>
        <div class="row">
            <span class="column1">
                <asp:Label ID="LastNameLabel" runat="server" Text="Last Name"/>
            </span>
            <span class="column2">
                <asp:TextBox ID="LastNameTextBox" runat="server" Width="137px"/>
            </span>
            <span class="column3">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*Required Field" ControlToValidate="LastNameTextBox"/>
            </span>
        </div>
        <div class="row">
            <span class="column1">
                <asp:Label ID="EmailLabel" runat="server" Text="E-Mail Address"/>
            </span>
            <span class="column2">
                <asp:TextBox ID="EmailTextBox" runat="server" Width="134px"/>
            </span>
            <span class="column3">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*Required Field" ControlToValidate="EmailTextBox"/>
            </span>
        </div>
        <div class="row">
            <span class="column1">
                <asp:Label ID="VerifyEmailLabel" runat="server" Text="Verify E-Mail"/>
            </span>
            <span class="column2">
                <asp:TextBox ID="VerifyEmailTextBox" runat="server" Width="136px"/>
            </span>
            <span class="column3">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="*Required Field" ControlToValidate="VerifyEmailTextBox"/>
            </span>
        </div>
        <div class="row">
            <span class="column1">
                <asp:Label ID="PasswordLabel" runat="server" Text="Password"/>
            </span>
            <span class="column2">
                <asp:TextBox ID="PasswordTextBox" runat="server" Width="138px" 
                TextMode="Password"/>
            </span>
            <span class="column3">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ErrorMessage="*Required Field" ControlToValidate="PasswordTextBox"/>
            </span>
        </div>
        <div class="row">
            <span class="column1">
                <asp:Label ID="VerifyPasswordLabel" runat="server" Text="Verify Password"/>
            </span>
            <span class="column2">
                <asp:TextBox ID="VerifyPasswordTextBox" runat="server" Width="138px" 
                TextMode="Password"/>
            </span>
            <span class="column3">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ErrorMessage="*Required Field" ControlToValidate="VerifyPasswordTextBox"/>
            </span>
        </div>
        <div class="row" style="color:Red;">
            <asp:CompareValidator ID="EmailValidator" runat="server" ErrorMessage="**E-mail Feilds Must Match" ControlToCompare="EmailTextBox" ControlToValidate="VerifyEmailTextBox"/><br />
            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
            ErrorMessage="**E-mail Addresses must follow the pattern user@domain.com" ControlToValidate="EmailTextBox" 
            ValidationExpression="\w+([-+.']\w+[-]*)*@\w+([-.]*\w+)*\.\w+([-.]\w+)*"/><br />
            <asp:CompareValidator ID="PasswordValidator" runat="server" ErrorMessage="**Password Fields Must Match" ControlToCompare="PasswordTextBox" ControlToValidate="VerifyPasswordTextBox"/>
        </div>
        <div>
            <asp:Button ID="SubmitButton" runat="server" Text="Submit" OnClick="SubmitButton_Click" />
        </div>
    </div>
</div>
</asp:Content>

コードビハインド

Imports PyriteGoldBLL
Imports PyriteGoldModel

Public Class CreateSalesAccount
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Session("permissionValue") <> 3 Then
        Response.Redirect("~/Home.aspx")
    End If
End Sub

Protected Sub SubmitButton_Click(sender As Object, e As EventArgs) Handles SubmitButton.Click
    Dim userLogic As New UserLogic()
    Dim user As New User()
    With user
        .FirstName = FirstNameTextField.Text
        .LastName = LastNameTextBox.Text
        .Email = EmailTextBox.Text
        .Password = PasswordTextBox.Text
        .Activated = True
        .Permission = 2
    End With
    userLogic.CreateUser(user)
End Sub

クラス終了

4

1 に答える 1

1

私はあなたが達成しようとしていることを100%フォローしているわけではありません..とにかくこれを突き刺します:)

Web メソッドを呼び出そうとするのではなく、AJAX で実際のページを呼び出そうとしています。あれを呼べ...

login、addItem など、必要なすべてのメソッドを備えた Web サービスを作成することをお勧めします。これらのメソッドは、必要なプロパティを取得する必要があります。IE ログインには、ユーザー名とパスワードが必要な場合があります。

Web サービスを作成しない場合は、これらすべてのメソッドを ajax がある同じページに配置する必要があります。

たとえば、ajax ログインの場合、URL は Web サービスへの URL で、その後に「/」が続き、その後にメソッド名が続きます。

$('#Button1').click(function () {
$.ajax({
    type: 'POST',
    url: "/MyWebservice.asmx/Login",
    data: "{'username':'" + YourUserNameVar + "', 'password':'" + YourPasswordVar +"'}",
    success: function (result) {
        var main = $('#Main');
        main.html($('#Main', result).html());
    }
});

});

この呼び出しを受け取るメソッドは次のようになります。

     <WebMethod()> _
    <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
    Public Function Login(ByVal username As String, ByVal password as string) As Object

       '' Do your login here and return whatever it is you need to return
       '' i have used 'Object' for this function by way of example

    End Function

もちろん、この回答は、より多くの情報で具体化できますが、これは、開始して正しい道を歩むことを目的としています.

アップデート:

AJAX で Web メソッド/Web サービスを使用する方法について少し学ぶ必要があります。この簡単なチュートリアルをご覧ください。開始するために必要なすべての手順を示します:)

于 2012-10-25T19:20:35.783 に答える