Вызов функции cs с данными в js с использованием ajax - PullRequest
0 голосов
/ 01 октября 2018

Я хочу получить доступ к функции cs из функции js на странице aspx после того, как пользователь нажмет кнопку «Удалить».и отправьте идентификатор функции cs.

Я пробую следующие коды:

js

function deleteClick(ID) {
       '<%Session["ID"] = "' + ID + '"; %>';
        var x = '<%= Session["ID"] %>';
        alert(x);
        $.ajax({
                    type: "POST",
                    url: "AddPI.aspx/deleteClick",
                    //data: ' {ID:"' + ID + '"}',
                    data: JSON.stringify({ ID: "' + ID + '" }),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (response) {
                        alert("Success");
                    },
                    failure: function (response) {
                        alert("Error");
                    }
                });
            }

cs

public void deleteClick(String ID)
    {
        Session["ID"] = Request.Params["ID"];
        var id = "";
        id = Session["ID"].ToString();

        DialogResult myResult;
        myResult = MessageBox.Show("Are you sure?", "Delete Confirmation", 
        MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

        if (myResult == DialogResult.OK)
        {
              errorbox.Visible = false;
            //connect to database and delete
        }
   }

проблема в том, что идентификатор не может быть передан!

РЕДАКТИРОВАТЬ: я решаю проблему, изменив функцию cs на static и отредактировав поле ниже:

data: "{ ID: '" + ID + "'}",    

вот и все.

Теперь проблема в том, как изменить видимость aspx div в статической функции cs?

errorbox.Visible = false;

я получил: ссылка на объект Ann требуется для нестатического поля ....

я пытаюсь вызвать js в случае успеха

success: setVisibility, 

и вJS:

$("#errorbox").hide();

но это не работает!

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Обратите внимание, что ваша первая проблема решена вами, и это здорово!:)

и у вас есть другая проблема, в которой вам нужно изменить видимость div при возникновении ошибки.Ну, вы измените видимость div errorbox на true в качестве значения по умолчанию

errorbox.Visible = true;

и в своем разделе скриптов скройте этот div с помощью jquery:

$(function(){
   $('[id$=errorbox]').hide(); //this will auto-run after page is completely loaded.
});

внесите небольшие измененияк вашей функции cs, например:

public string deleteClick(String ID)
    {
        Session["ID"] = Request.Params["ID"];
        var id = "";
        id = Session["ID"].ToString();

        DialogResult myResult;
        myResult = MessageBox.Show("Are you sure?", "Delete Confirmation", 
        MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

        if (myResult == DialogResult.OK)
        {
              errorbox.Visible = false;
            //connect to database and delete
            return "true"; //if successful
        }
        return "false"; //if not successful
   }

, а затем, если в вашем ответе на ajax (успех / ошибка) произойдет какая-либо ошибка, просто сделайте это в вашем ajax:

success: function (response) {
    if(response.d == "true")
    {
      alert('success');
    }
    else{
     $('[id$=errorbox]').show();
    }

},
error: function (response) {
   $('[id$=errorbox]').show();
}
0 голосов
/ 01 октября 2018
//Js Code
    function deleteClick(ID) {
        alert(ID);
        $.ajax({
            type: "POST",
            url: "Default.aspx/deleteClick",
            data: '{ID: "'+ID+'" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                alert(response.d);
            },
            failure: function (response,a,a2) {
                alert("Not Done");
            }
        });
    }







//c# Code
[System.Web.Services.WebMethod]
public static string deleteClick(string ID)
{
    //Your Code
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...