将数据从html发布到远程asp.net服务器(.aspx.vb)

时间:2013-02-18 14:17:05

标签: javascript asp.net html vb.net jquery

我有一个.html页面,其中包含对远程javascript文件Data.js的引用。在Data.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);
}

第三个函数执行第一个函数MyFunction();,然后执行第二个函数POSTHidden();,如下所示:

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

现在在VB.aspx上有一个名为WebMethod的{​​{1}},它基本上将字符串作为参数传递,并将其存储在数据库中,如下所示:

GETHidden

以上所有作品仅在 <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 页面与.html生成的ajax request位于同一个域中,或VB.aspx根据这post。由于我尝试将.html移出域名,我经常将其上传到另一个域,然后在打开.html时,它不起作用,而如果它位于同一个域中则可以正常工作名称。我想要实现的是在任何地方都有一个.html文件,在运行时,从引用的Data.js收集的数据应该发布到远程服务器并存储在数据库中。因此,.html页面应该可以在任何地方远程工作(尽管它所在的域或是否在本地PC上),并且数据应该传递或发布到远程服务器(通过ajax请求或任何POST请求可以解决问题),以便Hidden2可以存储在数据库中。请记住,浏览器兼容性和多用户同时打开页面(多服务器请求到服务器)。任何建议或想法将不胜感激。

1 个答案:

答案 0 :(得分: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