0

I'm trying to pass parameters to my code behind with WebMethod.

I'm reaching the success end of ajax but the method in my aspx.cs code behind doesn't get called and I have error.

Operation failed! Details :'[object Object]

I'm using a masterpage if it makes a difference.

How to do resolve this ?

Please, can you help me ?

Javascript:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.jsdelivr.net/json2/0.1/json2.js"></script>
<script type="text/javascript">
    $(function () {
        $("[id*=imgfasi]").bind("click", function () {
            var fasi = {};
            fasi.Txseltlc = $("[id*=txseltlc]").val();
            fasi.Txrescldisa = $("[id*=txrescldisa]").val();
            fasi.Ddlauttlc = $("[id*=ddlauttlc]").val();
            $.ajax({
                type: "POST",
                url: "Default.aspx/Savepnfasi",
                data: '{fasi: ' + JSON.stringify(fasi) + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    if (response == "1") {
                        alert("Success!");
                    } else {
                        alert("Operation failed! Details: " + response);
                    }
                }
            });
            return false;
        });
    });
</script>

code behind :

public class pnfasiweb
{
    public string Txseltlc { get; set; }
    public string Txrescldisa { get; set; }
    public string Ddlauttlc { get; set; }
}

[WebMethod]
[ScriptMethod]
public static void Savepnfasi(pnfasiweb fasi)
{
    if (!String.IsNullOrEmpty(HttpContext.Current.Request.QueryString["id"]))
    {         
        string ProductID = Mpskmt3.Base64ForUrlDecode(HttpContext.Current.Request.QueryString["id"].ToString());

        string sql = String.Format(@" UPDATE `dotable` ");
        sql += String.Format(" SET ");
        sql += String.Format(" Aut = ?, ");
        sql += String.Format(" Res = ?, ");
        sql += String.Format(" Dur = ?, ");
        sql += String.Format(" Comp = CASE WHEN Comp IS NULL THEN ? ELSE CONCAT(Comp, '; ', ?) END, ");
        sql += String.Format(" doDateHour = CURRENT_TIMESTAMP() ");
        sql += String.Format(" WHERE ID = ?; ");

        using (OdbcConnection cn =
                new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQLlocalhost"].ConnectionString))
        {
            using (OdbcCommand command =
                    new OdbcCommand(sql, cn))
            {
                try
                {
                    command.Connection.Open();                       
                    command.Parameters.AddWithValue("param1", fasi.Ddlauttlc.ToString());
                    command.Parameters.AddWithValue("param2", Convert.ToInt32(fasi.Txrescldisa.ToString()));
                    command.Parameters.AddWithValue("param3", Convert.ToInt32(fasi.Txseltlc.ToString()));
                    command.Parameters.AddWithValue("param4", Mpskmt3.Container.TheObjectPropertyName);
                    command.Parameters.AddWithValue("param5", Mpskmt3.Container.TheObjectPropertyName);
                    command.Parameters.AddWithValue("param6", ProductID.ToString());
                    command.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    command.Connection.Close();
                }
            }
        }
    }
    else
    {
       //Error
    }
}

#Edit01

enter image description here

5
  • 1
    A few pointers when debugging: don't throw ex;, just throw;. This way you can stack trace. Don't alert your errors, console.log them. Set breakpoints in javascript and debug in chrome console. Also for alerting objects, don't concatenate strings to them. Finally, if you want to see your message clearly on the client side, try using response.data Commented Feb 18, 2020 at 20:56
  • @JeffLi Thank you, I have added response.data and in the output I have correctly values. Please see my #Edit01 in my first question Commented Feb 18, 2020 at 21:05
  • write an error:function(e){ alert(e); } for the ajax and you can find what error it is Commented Feb 18, 2020 at 23:01
  • @VidiyaPrasanth Thanks but when write your suggestion ? Commented Feb 19, 2020 at 7:25
  • @VidiyaPrasanth The problem is string ProductID = Mpskmt3.Base64ForUrlDecode(HttpContext.Current.Request.QueryString["id"].ToString()); because JSON using POST method and I try update query with QueryString method... please can you help me ? Commented Feb 19, 2020 at 11:26

1 Answer 1

1

Try this :

var qString = "?" + window.location.href.split("?")[1];
var fasi = {};

...

url: "Default.aspx/Savepnfasi" + qString,
data: '{fasi: ' + JSON.stringify(fasi) + '}',
Sign up to request clarification or add additional context in comments.

Comments