Ajax Post работает только при отладке в браузере - PullRequest
0 голосов
/ 05 марта 2019

Я проверил все подобные вопросы здесь, решения и многое другое, но все еще не могу найти решение, которое работает для меня.

Во-первых: я абсолютно новичок в Ajax и только что получил проект от какого-то разработчика, который больше недоступен, так что я в своем уме ...

По сути, это фрагмент кода для ссылки, по которому щелкают, и это действие прекрасно работает, когда я отлаживаю весь процесс и просто «перехожу» на все, но простой запуск его всегда приведет к ошибке, а не к ошибке. успех.

var serviceURL = "http://address";
function bestellePosition(token, artikelId, userId, menge) {
    var authheader = 'Bearer ' + token;
    var url = "/WarenkorbPositions/AddMengeToCart";
    var type = "POST";

    $.ajax({
        cache: false,
        type: type,
        url: serviceURL + url,
        beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', authheader); },
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({
            userId: userId,
            artikelId: artikelId,
            menge: menge
        }),        
        success: function (result) {
            if (result.result === true) {
                alert('it worked');
            } else {
                alert('it didnt work');
            }
        },
        error: function (result) {
            alert(result.result);
        }
    });
}

Дополнительные вещи, которые я пытался добавить, были добавлены dataType: "json",, которые, казалось бы, ничего не делали. Добавление timeout: 10000, которое, похоже, тоже ничего не делает. Просто отправьте данные как data: {...} вместо использования JSON.stringify, который вообще не работал.

EDIT: URL-метод

private PostXnameEntities db = new PostXnameEntities();
private String conStr = @"Server=xxx\SQLEXPRESS,xxx;Initial Catalog=xxx;Persist Security Info=True;UID=xxx;Password=xxx;";

public Boolean AddMengeToCart(int userId, int artikelId, decimal menge)
        {
            var positionen = db.WarenkorbPosition.Include(w => w.Artikel).Include(w => w.User);
            var posquery = from p in positionen where p.UserId == userId && p.ArtikelId == artikelId select p;

            WarenkorbPosition pos = new WarenkorbPosition();

            if (posquery.ToList().Count > 0)
            {
                pos = posquery.ToList().First();
                if (menge == 0)
                {
                    int rows = 0;

                    SqlConnection sqlConn = new SqlConnection(conStr);

                    string queryOrder = "DELETE FROM [PostXname].[dbo].[WarenkorbPosition] WHERE [UserId] = @UserId And [ArtikelId] = @ArtikelId";
                    SqlCommand cmd = new SqlCommand(queryOrder, sqlConn);

                    cmd.Parameters.AddWithValue("@UserId", userId);
                    cmd.Parameters.AddWithValue("@ArtikelId", artikelId);
                    try
                    {
                        sqlConn.Open();
                        rows = cmd.ExecuteNonQuery();


                    }
                    catch (Exception)
                    {

                        throw;
                    }
                    sqlConn.Close();

                }
                else
                {
                    decimal posMenge = pos.Menge.Value;
                    decimal MengeGesamt = posMenge + menge;
                    int rows = 0;

                    SqlConnection sqlConn = new SqlConnection(conStr);

                    string queryOrder = "UPDATE [PostXname].[dbo].[WarenkorbPosition] SET [Menge] = @Menge WHERE [UserId] = @UserId And [ArtikelId] = @ArtikelId";
                    SqlCommand cmd = new SqlCommand(queryOrder, sqlConn);

                    cmd.Parameters.AddWithValue("@UserId", userId);
                    cmd.Parameters.AddWithValue("@ArtikelId", artikelId);
                    cmd.Parameters.AddWithValue("@Menge", Convert.ToDecimal(MengeGesamt));
                    try
                    {
                        sqlConn.Open();
                        rows = cmd.ExecuteNonQuery();


                    }
                    catch (Exception)
                    {

                        throw;
                    }
                    sqlConn.Close();

                }


            }
            else
            {

                int rows = 0;
                SqlConnection sqlConn = new SqlConnection(conStr);

                string queryOrder = "INSERT INTO [PostXname].[dbo].[WarenkorbPosition]([UserId],[ArtikelId],[Menge])VALUES(@UserId,@ArtikelId,@Menge)";
                SqlCommand cmd = new SqlCommand(queryOrder, sqlConn);

                cmd.Parameters.AddWithValue("@UserId", userId);
                cmd.Parameters.AddWithValue("@ArtikelId", artikelId);
                cmd.Parameters.AddWithValue("@Menge", Convert.ToDecimal(menge));
                try
                {
                    sqlConn.Open();
                    rows = cmd.ExecuteNonQuery();


                }
                catch (Exception)
                {

                    throw;
                }
                sqlConn.Close();

            }



            return true;
        }

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете проверить приведенный ниже код и попробовать один раз. Вы также можете проверить, что упомянутый вами URL-метод является типом GET или POST Пожалуйста, также расскажите, что вы получили в результате в методе ошибки (result.result)

 var serviceURL = "http://address";
  function bestellePosition(token, artikelId, userId, menge) {
    var authheader = 'Bearer ' + token;
    var url = "/WarenkorbPositions/AddMengeToCart";
    var type = "POST";

    $.ajax({
      cache: false,
      type: type,
      url: serviceURL + url,
      beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', authheader); },
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      data: JSON.stringify({
        userId: userId,
        artikelId: artikelId,
        menge: menge
      }),
      success: function (result) {
        if (result.result === true) {
          alert('it worked');
        } else {
          alert('it didn\'t work');
        }
      },
      error: function (result) {
        alert(result.result);
      }
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...