gpt4 book ai didi

c# - 通过 Ajax 发布到 MVC Controller

转载 作者:太空狗 更新时间:2023-10-29 23:29:32 27 4
gpt4 key购买 nike

您好,我目前正在尝试使用 AJAX 获取表单来发布 Controller ,但是到目前为止我没有运气,我一直在尝试获取表单以将表单中的值提交给提交时的 Controller 的形式,但它不会工作有人知道为什么吗? :

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>

Controller :

 [HttpPost]
public string GetSearchDetails(string companyName, string specialities, string category, string location)
{
return liveSearchRepository.GetUserInputResults(companyName,specialities,category,location);
}

最佳答案

据我所知,您的表单控件和 Controller 操作似乎没有正确链接,因为您的控件名称与操作参数不同。

同时将 ajax 调用中的 contentType 更改为 JSON,并将表单数据转换为 JSON 字符串。这样,如果您在通过 Ajax 提交之前将表单数据输出到控制台,您可以看到发送的内容。

尝试以下修改:

@{
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 formData = JSON.stringify($("#searchform").serializeArray());

console.log(formData);

$.ajax({
url: "Search/GetSearchDetails",
data: formData,
type: 'POST',
contentType: 'json'
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">Specialities:</label>
<select name="specialities">
<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">Category:</label>
<select name="category">
<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">
<label for="location">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>

编辑

如果您更改以下行:

var formData = JSON.stringify($("#searchform").serializeArray());

使用这段代码:

var formData = "";
$.each($("#searchform"), function(i,v) {
if (formData.length > 0) formData += ",";
formData += v.name + ": '" + v.value + "'";
});
formData = "{ " + formData + " }";

该解决方案将是通用的,如果您更改表单字段的名称,则无需更改代码。

关于c# - 通过 Ajax 发布到 MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35696196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com