0

.htmlリモート JavaScript ファイルへの参照を含むページがありますData.jsData.js生成された値を呼び出して、自分のページで既に定義されているnavigator.appName値に割り当てる関数があります。HiddenField.html

Page.html

  <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="http://server.com/Data.js" ></script> 
    </head>
    <body style = "font-family:Arial; font-size:10pt" onload="Execution();">
    <form id="form1">
    <div>
        <input type="hidden" id="Hidden2" />
        </div>
        </form>
    </body>
    </html>

Data.js

function Myfunction()
{
var val = navigator.appName;
document.getElementByID('Hidden2').value = val
}

Hidden2次のようなデータベースに値を保存するために、値をリモートサーバーに投稿する別の機能も用意しました。

    function POSTHidden() {
        $.ajax({
            type: "POST",
            url: "http://server.com/VB.aspx/GETHidden",
            data: '{name: "' + $("#Hidden2")[0].value + '" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
        });
    }
function OnSuccess(response) {
    alert(response.d);
}

そして、次のように、最初の関数を実行してから 2 番目の関数を実行する 3 番目のMyFunction();関数POSTHidden();:

function Execution()
{
myFunction();
POSTHidden();
}

現在、基本的に文字列を引数として渡し、次のようにデータベースに保存するという呼び出しVB.aspxがあります。WebMethodGETHidden

<System.Web.Services.WebMethod()> _
Public Shared Function GETHidden(ByVal value As String) As String
Dim value = String.Empty
Dim str = value.Split(New Char() {" "c})
Dim conn As String

conn = ConfigurationManager.ConnectionStrings("connStr").ConnectionString
Dim sqlcon As New SqlConnection(conn)

Try
sqlcon.Open()
Dim cmd = New SqlCommand("Insert into table (Record1) values (@param)", sqlcon)
cmd.Parameters.AddWithValue("@param", value)
cmd.ExecuteNonQuery()
cmd.Dispose()
sqlcon.Close()

Catch ex As Exception

End Try
End Function

上記のすべては、ページが生成元と同じドメインにある場合、またはこの投稿に従って配置されている場合にのみ機能します。いつもアップロードしているドメインから を移動して別のドメインにアップロードしようとしたため、 を開くと機能しませんが、同じドメイン名にある場合は機能します。私が達成しようとしているのは、ファイルをどこにでも配置し、実行時に、参照から収集されたデータをリモートサーバーに投稿してデータベースに保存することです。したがって、.htmlajax requestVB.aspx.html.html.htmlData.js.htmlページはリモートのどこからでも機能する必要があり (ドメインに関係なく、またはローカル PC 上にあるかどうかに関係なく)、データをリモート サーバーに渡すか投稿する必要があります (ajax 要求または問題を解決できる POST 要求を介して) Hidden2。データベースに格納されます。ブラウザの互換性と、複数のユーザーが同時にページを開くこと (サーバーへのマルチポスト リクエスト) に注意してください。提案やアイデアは大歓迎です。

4

1 に答える 1

0

クロスドメインリクエストを処理するには、サーバー側でアクセス制御ヘッダーを指定する必要があります

Access-Control-Allow-Headers

HTTP アクセス制御 (CORS)

これらを参照してください。他のものと比較して.netでは少し注意が必要です

http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

http://patelshailesh.com/index.php/cross-domain-asp-net-web-api-call-using-ajax

于 2013-08-11T14:25:53.267 に答える