我如何使用 Ajax Jquery 和 return 视图?

How can i use Ajax Jquery and return View?

我有一个 Ajax Jquery 函数,它将值(位置和参数)发送到 IActionresult,后者在数据库中进行搜索,returns 一个具有正确对象数据的新视图模型的。

断点显示它进入 Actionresult 并正确传递参数,它运行 return 视图,但不 return 视图。它什么都不做。

Jquery Ajax 是否需要其他数据类型?

在浏览器控制台中,我可以看到 Post 方法已完成。

感谢您的帮助。

Index.cshtml

var LatPosition;
var LongPosition;

const successCallback = (position) => {
    console.log(position);
    LongPosition = position.coords.longitude;
    LatPosition = position.coords.latitude;
    console.log(LatPosition);
}

const errorCallback = (error) => {
    console.error(error);
}
navigator.geolocation.getCurrentPosition(successCallback, errorCallback);

function sendAjaxRequest(element, urlToSend) {
    var clickedButton = element;
    $.ajax({
        type: "POST",
        url: urlToSend,
        dataType: "json",
        data: { 
            LongPosition: LongPosition, 
            LatPosition: LatPosition, 
            id: clickedButton.val(), 
            takeValue: $("#TabakName").val()
        },
        success: function (data) {
            alert(data);
        },
        failure: function (errMsg) {
            alert(errMsg);
        }
    });

    }

    $(document).ready(function () {
        $('#button_1').click(function (e) {
            e.preventDefault();
            sendAjaxRequest($(this), '@Url.Action("Tabakvalidierung","Home")');
        });
    });
 
$(document).ready(function () {
    $("#TabakName").autocomplete({
     source: '@Url.Action("Search", "Tabaksuche")',

    });
});

HomeController.cs

[HttpPost]
public IActionResult Tabakvalidierung(
    string takeValue, 
    string LongPosition, 
    string LatPosition) 
{
    return  View("Shopliste", shopDatens); //returning View with right object
}      

将您的 ajax 更改为:

$.ajax(
            {
               
                  url: urlToSend,
                 data: { 
            LongPosition: LongPosition, 
            LatPosition: LatPosition, 
            id: clickedButton.val(), 
            takeValue: $("#TabakName").val()
        },
                
                type: "POST",
              
                success: function (result) {
                    $(div).html(result);

// div is  Id of <div>  where you have to show you partial view
                
                },
                error: function (xhr, exception) {
                    ........
                }
            });

并将您的控制器更改为:

[HttpPost]
public IActionResult Tabakvalidierung(
    string takeValue, 
    string LongPosition, 
    string LatPosition) 
{
    return  PartialView("Shopliste", shopDatens); 

// return partial View, if you use View it will be returned with the whole Layout
}  
```