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 呼び出しにパラメーターを追加してみてください。asmx サービスへの POST を使用していますが、その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ページがjavacsriptを出力する代わりに、ASPスクリプトがページに何をしたいかを説明するXMLまたはJSONを返すようにします。

編集:ASPコードをもう少し具体的にしました。また、ページを変更するためにknockoutjsを使用している場合に、ページを操作するために行うことを少しよく反映するようにjavascriptを変更しました。

あなたの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 に答える