すべての解決策/同様の質問はjsonオブジェクトと関係しています。私は問題がhtmlを使用することによって引き起こされるかもしれないと思う。また、データが空でないことを確認してから、ajaxコールにヒットします。ここでMVC:Ajaxデータがコントローラに到達しない
は、Ajax
function SubmitSearch() {
var type = $("#select_SearchType").val()
var query = $("#input_Search").val()
$.ajax({
//url: "newSearch",
url: '@Url.Action("newSearch", "Results")',
type: 'POST',
cache: false,
dataType: "html",
contentType: 'application/html; charset=utf-8',
data: { type: type, query: query },
success: function (ViewModel) {
alert(ViewModel)
$("#div_record").empty();
$("#div_record").html(ViewModel)
},
error: function (ViewModel) {
alert("error")
$("#div_record").empty();
$("#div_record").html(ViewModel)
},
});
}
とアクション
[HttpPost]
public ActionResult newSearch(string type, string query)
{
switch (type)
{
case " ":
response.errMess = "empty data, T:" + type + " Q:" + query;
return PartialView("Record", response);
default:
response.errMess = "Error: mismatched fields, T:" + type + " Q:" + query;
return PartialView("Record", response);
}
タイプとクエリから選択したコードの両方あなたはcontentType: 'application/html; charset=utf-8'
を使用する必要はありません空
はなぜ、あなたの 'のcontentTypeです:
あなたが
PartialView
を返すようにしたい場合は、このようなdataType: "html"
何かを使用する必要はありません「アプリケーション/ htmlの。あなたが実際に 'application/x-www-form-urlencoded'を投稿しているときは、' charset = utf-8''ですか? * response *でHTMLを期待しているならば、 'dataType: 'html''で十分でしょう。 'contentType'は* request *によって使われます。 – haim770
私は送信しているオブジェクトのタイプが単なるテキスト文字列であるので、それは正しいと考えました –
ありがとうございました! –