1

我对 J-QUERY 和 JavaScript 还很陌生。我有几个表单,它们使用一些 JavaScript 来收集数据并提交到一个 asp 页面来处理调用 T-SQL 过程的请求(编辑用户数据、添加信息、删除等)。该过程运行良好,但我需要添加一些检查和警报消息,但我没有成功。这是一个示例

$("#add-user-form").dialog({
    autoOpen: false,
    height: 300,
    width: 420,
    modal: true,
    buttons: {
        'Add User': function () {
            var bValid = true;
            allFields.removeClass('ui-state-error');`enter code here`
            bValid = bValid && checkLength(loginname, "Login Name", 3, 10);
            if (bValid) {
                var statusdataString = '?section=adduser&loginname=' + loginname.val() + '&fullname=' + fullname.val() + '&type=' + type.val();
                $(this).dialog('close');
                $.ajax({
                    type: "GET",
                    url: "admin.asp" + statusdataString
                });
            }
            window.location.reload();
        },
        Cancel: function () {
            $(this).dialog('close');
        }
    },
    close: function () {
        allFields.val('').removeClass('ui-state-error');
    }
});

这是调用的 asp 部分

if (section = "adduser") then
   edituser_sql =  "Exec add_user "  & "'" & request("loginname") & "','" &       
   request("fullname") & "'," & request("type") 
   Conn.execute edituser_sql
   Conn.close
   set Conn = nothing 
   set dsn = nothing 

end if

现在这是我的问题:

  1. 一旦所有这些都完成后,我需要发出警报说“用户添加”或“重复用户”等。我尝试在成功后添加它:像这样

    $.ajax({ type: "GET", url: "admin.asp"+statusdataString, success: function(){alert("something")}

    });

但它不起作用。我还尝试保存过程返回的结果,它告诉我是否添加了用户,然后在 asp 代码中执行此操作

if results= -1 then 
%>
<Script type="text/JavaScript">
alert("something");
</script>
<%

但这也行不通。我想我理解这个过程,但我不确定所有这些代码是如何工作的,只是点点滴滴。您的帮助将不胜感激

4

2 回答 2

2

成功处理程序不工作的最可能原因是 Web 服务调用不成功。

尝试向error:您的 ajax 调用添加一个参数,类似于我的示例。我正在使用 POST 到 asmx 服务,但您可以将该error:部分复制到您的函数中。

    $.ajax({
        type: "POST",
        async: true,
        url: "../webserviceurl",
        data: parameters,
        contentType: "  application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            // Show any returned message alerts
            return;
        },
        error: function (ex) {
            alert("error" + ex.toString());
        }
    });

然后就可以调试web请求失败的原因了。

于 2012-06-27T15:00:05.923 回答
0

我会让您的 ASP 脚本返回一些 XML 或 JSON 来描述您希望页面执行的操作,而不是让您的 ASP 页面输出一些 javacsript。

编辑:我已经使 ASP 代码更加具体,并且我还更改了 javascript 以更好地反映如果您使用,例如,knockoutjs 来修改页面,您可能会做什么来操作页面。

在您的 ajax 函数中,您可以这样做:

'Add User': function () {
    //....stuff you did...
    $.ajax({
        url: "YourUrl....",
        dataType: "json",
        success: function(response) {
            if (response.status) {
                alert("User added!");
                //do some stuff with response.user
                //if using knockoutjs, just add it to an observable which you would have
                //previously put in the class myViewModel (users is an observable array)
                //this would magically make it appear in your user list
                myViewModel.users.push(new UserModel(response.user));
            }
            else {
                alert("User not created");
            }
        }
        error: function (error) {
            alert(error);
        }
    });
///the rest of your function

此外,您将不得不摆脱页面重新加载部分。

您的 ASP 将返回一些格式如下的 JSON,以与我刚刚编写的内容兼容:

%>
{
    status : <% response.write(response > -1) %>
    user : { <% response.write(aStringInWhichYouHavePutSomeInfoAboutTheUser) %> }
}
%>

另外,我不太了解 ASP,所以我根据我所知道的猜测上面的语法:p

于 2012-06-27T15:02:45.447 回答