Vì vậy, tôi đang tạo một số bài đăng ajax và có vẻ hoạt động tốt trên máy chủ cục bộ, nhưng khi tôi xuất bản lên máy chủ ec2 trên amazon, tôi nhận được Uncaught SyntaxError: B. Điều này dường như chỉ ra lỗi phân tích cú pháp JSON. Cơ sở dữ liệu tương tự, cùng một trình duyệt và các phương thức giống nhau được gọi. Tại sao nó hoạt động trên máy cục bộ chứ không phải trên máy chủ.Uncaught SyntaxError: Mã thông báo không mong muốn B trên máy chủ trực tiếp nhưng không phải địa phương
$.ajax({
url: '@Url.Action("Action")',
type: "POST",
data: ko.toJSON(viewModel),
dataType: "json",
contentType: "application/json; charset:utf-8",
success: function (result) {
},
error: function (xhr, textStatus, errorThrown) {
var errorData = $.parseJSON(xhr.responseText);
var errorMessages = [];
for (var key in errorData)
{
errorMessages.push(errorData[key]);
}
toastr.error(errorMessages.join("<br />"), 'Uh oh');
}
});
Dưới đây là cách bố trí cơ bản về phía máy chủ:
[HttpPost]
public JsonResult Action(ViewModel model)
{
try
{
Response.StatusCode = (int)HttpStatusCode.OK;
return Json("Successfull");
}
catch (Exception ex)
{
logger.Log(LogLevel.Error, string.Format("{0} \n {1}", ex.Message, ex.StackTrace));
Response.StatusCode = (int)HttpStatusCode.BadRequest;
List<string> errors = new List<string>();
errors.Add(ex.Message);
return Json(errors);
}
}
Trong thử tuyên bố, tôi làm một vài truy vấn đến cơ sở dữ liệu và gửi một số tính toán trên Authorize.Net (https://api.authorize.net/soap/v1/Service.asmx)
Nếu có lỗi với lệnh gọi dịch vụ web Authorize.net thì tôi sẽ trả về lỗi như sau:
if (profile.resultCode == MessageTypeEnum.Error)
{
logger.Log(LogLevel.Error, string.Join(",", profile.messages.Select(x => x.text)));
Response.StatusCode = (int)HttpStatusCode.BadRequest;
List<string> errors = new List<string>();
profile.messages.ToList().ForEach(x => errors.Add(x.text));
db.SaveChanges();
return Json(errors);
}
Lỗi này mà tôi đang đăng nhập:
A public action method 'AddPromoCode' was not found on controller 'Flazingo.Controllers.PositionController'. at
System.Web.Mvc.Controller.HandleUnknownAction(String actionName) at
System.Web.Mvc.Controller.ExecuteCore() at
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) at
System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.b__5() at
System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.b__0() at
System.Web.Mvc.MvcHandler.<>c__DisplayClasse.b__d() at
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously)
này nghe có vẻ như một vấn đề máy chủ. Bạn có thể chia sẻ mã phía máy chủ sau @ Url.Action ("Hành động") không? – CodeThug
@CodeThug Tôi đã thêm mã phía máy chủ. – jmogera
@CodeThử bất kỳ ý tưởng nào. Hãy giúp tôi! – jmogera