2015-02-18 3 views
1

Все, что я хочу сделать, это отправить zipcode на контроллер, сделать некоторые вещи в zipcode и опубликовать изменения в zipcode. Но мой параметр а всегда равен нулю. Может ли кто-нибудь сказать мне, что я делаю неправильно?Публикация Ajax и получение от контроллера mvc

Вот мой код:

Вид:

<input type="text" id="zipcode" /> 

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     var serviceURL = '/Employer/employer/index'; 
     var zipcode = $("#zipcode").val(); 

     $("#zipcode").blur(function() { 
      $.ajax({ 
     type: "POST", 
     url: serviceURL, 
     data: {'a':zipcode}, 
     contentType: "application/json; charset=utf-8", 
     success: successFunc, 
     error: errorFunc 
    }); 

    function successFunc(data, status) { 
     alert(data); 
    } 

    function errorFunc() { 
     alert('error'); 
    } 
    }); 
    }); 

Контроллер:

public ViewResult Index() 
{ 
    return View(); 
} 
[HttpPost] 
public ActionResult Index(string a) 
{ 
    return Json("test", JsonRequestBehavior.AllowGet); 

} 
+0

'/ Работодатель/работодатель/индекс' не является файлом. Это должно быть 'index.php' или что-то еще, добавьте расширение. –

+1

Вы включаете jQuery дважды на своей странице - удалите один из них. Возможно, это не корень вашей проблемы, но это, безусловно, не поможет –

+0

@JeremyThille нет, этого не должно быть, это не так, как работает asp.net-MCV – devqon

ответ

1

Во-первых, вы в том числе две версии JQuery в вашей странице, я настоятельно рекомендую удалить один. Используйте 1.9, если вы хотите поддерживать IE9 и ниже, 2.0 +, если вы не поддерживаете устаревшие браузеры.

Кроме того, когда jQuery сериализует data при условии, что он не обязательно отправляется в формате JSON, поэтому настройка contentType: "application/json; charset=utf-8" может вводить в заблуждение связующее устройство модели MVC, удалять его.

Наконец, обратите внимание, что zipcode установлен только на загрузку страницы, вы также должны получить его до отправки запроса AJAX.

4

Обратите внимание, что вы сохраняете значение ZipCode в переменные права в document.ready обработчика до того, пользователь имел возможность взаимодействовать с ним. Вы должны сделать это в обработчике размытия, чтобы убедиться, что вы берете на себя фактическое значение:

$("#zipcode").blur(function() { 
    var zipcode = $("#zipcode").val(); 
    $.ajax({ 
+0

Это правильно. zipcode инициализируется один раз и пуст (потому что это всего лишь загрузка страницы). Затем значение ввода больше не обновляется; он просто отправлен пустым. –

Смежные вопросы