2015-12-19 5 views
2

Я пытаюсь вызвать MVC-контроллер из jquery, но не смог поместить вызов. Есть ли какие-либо проблемы в нижеприведенном коде Пожалуйста, выясните, что в случае возникновения каких-либо проблем, а также я не получаю никаких ошибок.ajax post call not working

URL = "HTTP: // локальный: 49917/Account/SaveAddress"

this.SaveAddress = function (url, addressData) 
 
    { 
 
      $.ajax({ 
 
       type: "POST", 
 
       url: url, 
 
       dataType: "json", 
 
       data: JSON.stringify(addressData), 
 
       contentType: 'application/json; charset=utf-8', 
 
       success: function (responseDetail) { 
 
        }, 
 
       error:function(e) 
 
       { 
 

 
       }, 
 
      }); 
 
    return 0; 
 
};

public async Task<ActionResult> SaveAddress(AddressListViewModel addressListVM) 
    { 
     bool response; 
     string message; 
     if (addressListVM.ID <= 0) 
     { 
      response = await Task.Run(() => AccountManager.Instance().AddAddress(addressListVM)); 
      message = response ? "New address added successfully." : "Failed to add new address."; 
     } 
     else 
     { 
      response = await Task.Run(() => AccountManager.Instance().UpdateAddress(addressListVM)); 
      message = response ? "Selected address updated successfully." : "Failed to update selected address."; 
     } 
     ModelState.Clear(); 
     return Json(new { responsestatus = response, message = message }, JsonRequestBehavior.AllowGet); 
     //return PartialView("_AddressDetail", BuildAddressListEntity(
     //        UserManager.FindById(User.Identity.GetUserId()), response, message, addressListVM.ID, true)); 
    } 
+0

Вы говорите, что это вообще не касается метода контроллера? Как примечание, 'ModelState.Clear();' бессмысленно (вы возвращаете json, а не view/model), и вы фактически ничего не делаете с возвращаемыми вами данными. –

+0

И ваше значение 'url' не должно быть жестко запрограммировано таким образом - оно должно быть' url = "/ Account/SaveAddress" '(и предпочтительно сгенерировано с помощью' @ Url.Action() ') –

+0

В Google Chrome загрузите свою страницу и затем нажмите F12, чтобы открыть консоль разработчика. Оттуда нажмите «Сеть». После этого вызовите свой метод ajax со страницы и посмотрите, был ли запущен какой-либо запрос или нет в консоли разработчика. –

ответ

0

Да, вам не хватает закрывающей скобки в конце функции this.saveaddress

this.SaveAddress = function (url, addressData) 
    { 
     $.ajax({ 
      type: "POST", 
      url: url, 
      dataType: "json", 
      data: JSON.stringify(addressData), 
      contentType: 'application/json; charset=utf-8', 
      success: function (responseDetail) { 
       }, 
      error:function(e) 
      { 

      }, 
     }); 

после всего этого .. вам нужна еще одну закрывающей скобки:

} 

;)

+0

все еще не работает –

0

Что делает дисплей консоли? Если вы используете Chrome, щелкните правой кнопкой мыши, выберите «Осмотреть» и найдите вкладку «Консоль». Если вы правильно вызываете функцию AJAX, то на этой вкладке «Консоль» должно отображаться что-то, что, вероятно, приведет вас в правильном направлении, чем я мог бы с информацией, которую я имею.

+0

ничего, никаких ошибок просто нет –

+0

вот почему я сбиваю с толку –

+0

Как вы называете функцию this.SaveAddress? Код, который вы предоставили, просто определяет функцию, но никогда не использует ее. –

0

Поместите контрольную точку в свои функции успеха и ошибки. Если он попадает в функцию ошибки, проблема заключается либо в том, что действие контроллера не было обнаружено, либо что данные недействительны json (либо данные сообщения, либо данные возврата). Вы должны добавить параметр errorThrown в функцию ошибки, чтобы вы могли легко понять, в чем проблема. Вам также не нужно форматировать данные, если они уже являются допустимыми json, но если это строка, представляющая данные json, вам нужно будет использовать json.parse (извините за неправильный случай).