0

jQueryからC#にajaxを使用してデータを送信したい(注:同じページにリクエストを送信しています)。私はこのチュートリアルhttp://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/に従っています。

注: これは、SharePoint 2010 Web パーツ ソリューション上の asp.net 3.5 です。

これは私のjqueryコードです:

$.ajax({
    type: "POST",
    url: getURLWithoutQuery() + "/saveOrder",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        alert(msg.d);
    }
});

// return the url of the current page without any query parameters
function getURLWithoutQuery() {
    return location.protocol + '//' + location.host + location.pathname;
}

C# では、メイン ファイルはPDFLibraryUserControl.ascx.cs. これは、Page_Load機能を備えたものです。

ただし、次の名前の別のクラスファイルがありますSaveStructure.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.Services;

namespace PDFLibrary.PDFLibrary
{
    public partial class SaveStructure : Page
    {
        [WebMethod]
        public static int saveOrder()
        {
            return 1234;
        }
    }
}

というアラートが表示されることを期待しています1234が、代わりに次のように表示されます。

ここに画像の説明を入力

saveOrderメインファイルとは別のファイルにある関数と関係がありますか? それとも、私の URL が正しくないのでしょうか? 現在のページはaspxページであり、POSTを(同じページに)送信するためのjQueryコードも含まれているため、URLをハードコーディングしたくありません。

誰が何が間違っているのか知っていて、これを修正できますか?

4

1 に答える 1

0

ユーザー コントロール内にページ メソッドを配置することはお勧めできません。最大の問題は、ページのようにスクリプト (読み: jQuery) を介してユーザー コントロールに直接アクセスできないこと.aspxです。このロジックをユーザー コントロールに配置するだけに制限されている場合は.asmx、ページ メソッドが実行しようとしていたロジックを実行する Web サービス ( ) を作成することをお勧めします。.ajax()Web サービスは、次のように jQuery メソッドを介して直接アクセスできます。

Code from myService.asmx:
[WebMethod]
public static int saveOrder()
{
    return 1234;
}

Code in SharePoint .aspx page:
<script type="text/javascript">
    $(document).ready(function() {
        $.ajax({
            type: "POST",
            url: "myService.asmx/saveOrder",
            contentType: "application/json; charset=utf-8",
            data: "{}",
            dataType: "json",
            success: handleSuccess,
            error: handleError
        });
    });

    function handleSuccess(data, status) {
        // Do something with successful data retrieval
    }

    function handleError(xmlRequest) {
        // Do something with error
    }
</script>
于 2013-06-27T02:33:18.683 に答える