私はいくつかのajax投稿を作成していますが、ローカルホストでうまくいくようですが、amazonでec2サーバーに公開するとUncaught SyntaxError:Unexpected token B. JSONの解析に失敗したようです。同じデータベース、同じブラウザ、同じメソッドが呼び出されています。なぜローカルで動作し、サーバー上で動作しないのでしょうか?ここでキャッチされていないSyntaxError:ローカルサーバーではなく予期しないトークンB
$.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');
}
});
は、サーバー側の基本的なレイアウトです:文を試す内
[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);
}
}
、私は(データベースへのクエリのカップルを行うと、Authorize.Net上のいくつかの計算を投稿しますhttps://api.authorize.net/soap/v1/Service.asmx)
Authorize.netのWebサービスコールでエラーが発生した場合は、次のようなエラーが返されます。
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);
}
私がログインしています。このエラー:
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)
これは、サーバーの問題のように聞こえると引用符を置き換えるです。 @ Url.Action( "Action")の背後にあるサーバーサイドのコードを共有できますか? – CodeThug
@ CodeThugサーバーのサイドコードを追加しました。 – jmogera
@CodeThug任意のアイデア。助けてください! – jmogera