Я проверил все подобные вопросы здесь, решения и многое другое, но все еще не могу найти решение, которое работает для меня.
Во-первых: я абсолютно новичок в 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;
}