Javascript JSON发送的数据总是空的 第一个问题

Javascript JSON发送的数据总是空的 第一个问题,javascript,ajax,json,asp.net-mvc,Javascript,Ajax,Json,Asp.net Mvc,我为另一个编码员处理代码 我必须正确地检查cron表达式,我可以更改程序中的许多行代码。我从表单中获取参数,并尝试将此数据发送到控制器MVC var outl = document.getElementById('Frequency').value; var tmp = checkValid(outl); 及 MVC中的控制器看起来像: public JsonResult isValid(string dataFromJson) { Options options = new Opti

我为另一个编码员处理代码

我必须正确地检查cron表达式,我可以更改程序中的许多行代码。我从表单中获取参数,并尝试将此数据发送到控制器MVC

var outl = document.getElementById('Frequency').value;
var tmp = checkValid(outl);

MVC中的控制器看起来像:

public JsonResult isValid(string dataFromJson)
{
    Options options = new Options()
    {
        ThrowExceptionOnParseError = true,
        Use24HourTimeFormat = true,
    };

    try
    {
        ExpressionDescriptor ceh = new ExpressionDescriptor(dataFromJson, options);
        string description = ceh.GetDescription(DescriptionTypeEnum.FULL);
        return Json(true);
    }
    catch (FormatException)
    {
         return Json(false);
    }
 }
参数
dataFromJson
通常为空。为什么?真的,我不知道我错在哪里了

第二部分
在控制器中,我返回JSON——这是个好主意吗?如何在Ajax中从该控制器获得响应,请按如下所示更改
Ajax
数据

function checkValid(checkExpression)
{
var tmp = JSON.stringify({dataFromJson : checkExpression});
$.ajax({
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    type: 'POST',
    url: '/Service/isValid',
    data: tmp,
    success: function (isvalid)
    {
        return isvalid;
    }
    });
   console.log(tmp);
}
在上面,我更改了
var tmp=JSON.stringify({dataFromJson:checkExpression})这个,现在可以在服务器端绑定。如果希望从服务器响应获得json,还可以将
dataType
更改为
json


关于第二部分,根据您的需求,您可以根据需要使用
内容
Json

将控制器操作方法的参数类型更改为JObject(Newtonsoft.Json.Linq)或dynamic 公共JsonResult有效(JObject dataFromJson)


或者JsonResult是有效的(DynamicDataFromJSON)

感谢您在编辑中的帮助
function checkValid(checkExpression)
{
var tmp = JSON.stringify({dataFromJson : checkExpression});
$.ajax({
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    type: 'POST',
    url: '/Service/isValid',
    data: tmp,
    success: function (isvalid)
    {
        return isvalid;
    }
    });
   console.log(tmp);
}