12

我总是收到“错误”警报,但我不知道出了什么问题。我只是想取回我发送的字符串(“testexpression”)。它必须与数据部分有关,因为没有参数它可以工作。

这是jquery部分:

<script>

$("#meaning").blur(function () {

    $.ajax({ 
        type: "POST",
        url: '/GetMeaning/',
        data: {"expression" : "testexpression"},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successFunc,
        error: errorFunc
    });

    function successFunc(data, status) {
        $("#dictionaryDropDown").html(data);
    }

    function errorFunc() {
        alert('error');
    }
})
</script>

这是控制器:

    public class GetMeaningController : Controller
{
    //
    // GET: /GetMeaning/

    [HttpGet]
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(string expression)
    {

        return Json(expression, JsonRequestBehavior.AllowGet);

    }

}

(更新:类型是 post,我也只是用 get 试了一下,我把它留在了里面)

4

2 回答 2

16

您需要将数据作为字符串/json 发送。您正在发送一个 javascript 对象。此外,URL 可能需要是绝对 url 而不是相对 url

$("#meaning").blur(function () {

    $.ajax({ 
        type: "POST",
        url: '/GetMeaning/',
        data: JSON.stringify({expression: "testexpression"}),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successFunc,
        error: errorFunc
    });

    function successFunc(data, status) {
        $("#dictionaryDropDown").html(data);
    }

    function errorFunc() {
        alert('error');
    }
})
于 2013-10-17T23:44:48.027 回答
0

On the back end side I recommend

return Json(
    new { this.expression = expression },
    JsonRequestBehavior.AllowGet);

Assuming you want to send back an actual JSON and not just some random string.

于 2013-10-17T23:53:30.590 回答