Witam Obecnie próbuję uzyskać formularz do wysłania kontrolera za pomocą AJAX, jednak nie miałem szczęścia do tej pory, próbowałem uzyskać formularz do przesłania wartości w formularzu do kontrolera po przedłożeniu formularza, ale nie zadziała, czy ktoś nie wie dlaczego? :Przesyłanie przez Ajax do kontrolera MVC
CSHTML:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Abintegro Search Prototype</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$("#submitsearch").click(function (e) {
e.preventDefault();
var form = $("#searchform");
$.ajax({
url: "Search/GetSearchDetails",
data: form.serialize(),
type: 'POST',
success: function (data) {
//Show popup
$("#popup").html(data);
}
});
});
</script>
<!-- Javascript function to add autocomplete search phrases for the company name text search-->
<script>
$(function() {
var searchPhrases = [
"Zep Solutions",
"Wetherby Consultants Ltd",
"Webmploy",
"WATS Recruitment Ltd",
"Vital Resources",
"VG Charles and Co",
"Veredus UK",
"Venn Group",
"VanDuo Consulting"
];
$("#phrases").autocomplete({ source: searchPhrases });
});
</script>
</head>
<body>
<form id="searchform" name="searchform">
<div class="company-textbox">
<label for="companyname">Company Name</label>
<input id="phrases" name="companyname">
</div>
<br />
<div class="specialities">
<label for="specialities-dropdown">Specialities:</label>
<select name="specialities-dropdown">
<option value="Consumer Products & Services">Consumer Product & Services</option>
<option value="Support Services">Support Services</option>
<option value="Communication & Entertainment">Communication & Entertainment</option>
<option value="Business & Professional Services">Business & Professional Services</option>
<option value="Public Sector">Public Sector</option>
<option value="Not for profit">Not for profit</option>
<option value="Sports Information">Sports Information</option>
</select>
</div>
<br />
<div class="category">
<label for="category-dropdown">Category:</label>
<select name="category-dropdown">
<option value="Generalist">Generalist</option>
<option value="Specialist">Specialist</option>
<option value="Exec Search">Exec Search</option>
<option value="Interim Management">Interim Management</option>
</select>
</div>
<br />
<div class="location-dropdown">
<label for="location-dropdown">Location:</label>
<select name="Location">
<option value="London">London</option>
<option value="Bristol">Bristol</option>
<option value="Manchester">Manchester</option>
<option value="Birmingham">Birmingham</option>
</select>
</div>
<input type="submit" value="Submit" name="submitsearch" id="submitsearch">
</form>
</body>
</html>
Kontroler:
[HttpPost]
public string GetSearchDetails(string companyName, string specialities, string category, string location)
{
return liveSearchRepository.GetUserInputResults(companyName,specialities,category,location);
}
co oznacza wydajność "form.serialize()"? Lepiej jest, jeśli utworzysz klasę poco dla operacji 'POST' i odpowiednio wyczujesz dane ze swojego skryptu. –
Spróbuj wstawić dataType: "html", jako argument w twoim wywołaniu .ajax – andreasnico
Co dokładnie nie działa? Czy możesz debugować skrypt JavaScript, aby zweryfikować, czy powinien on wysyłać dane o wpisie do kontrolera? –