Javascript MVC控制器无法从Ajax POST请求中获取双值

Javascript MVC控制器无法从Ajax POST请求中获取双值,javascript,c#,ajax,asp.net-mvc,Javascript,C#,Ajax,Asp.net Mvc,我有POST函数,我需要从JS向控制器发送我的值。字符串和整数值的到达没有问题,但双值在服务器端没有到达,但当我在本地端尝试时,它工作了。为什么会这样 这里是我的JS和控制器代码 var cmbvdf = $('#cmbvolDec').data('kendoComboBox'); var cmbvdfval = cmbvdf.value(); var cmbadf = $('#cmbamtDec').data('kendoComboBox'); var cmbadfval = cmbadf.v

我有POST函数,我需要从JS向控制器发送我的值。字符串和整数值的到达没有问题,但双值在服务器端没有到达,但当我在本地端尝试时,它工作了。为什么会这样

这里是我的JS和控制器代码

var cmbvdf = $('#cmbvolDec').data('kendoComboBox');
var cmbvdfval = cmbvdf.value();
var cmbadf = $('#cmbamtDec').data('kendoComboBox');
var cmbadfval = cmbadf.value();
var cmbCur = $('#cmbCurrency').data('kendoComboBox');
var cmbcurrency = cmbCur.value();
var cmtheme = $('#cbmTheme').data('kendoComboBox');
var cmbvaltheme = cmtheme.value();
var cmblang = $('#cmbLanguage').data('kendoComboBox');
var cmbvallang = cmblang.value();
var custname = $("#txtCustName").val();
var websitetitle = $("#txtWebName").val();
var zoom = $("#txtZoom").val();


var lat1 = $("#txtLat1").val();
var lon1 = $("#txtLon1").val();
        var url = '../Setting/SaveRecords';
        $.ajax({
            type: "POST",
            url: url,
            data:JSON.stringify({ 'volumeDecimalFactor': cmbvdfval, 'amountDecimalFactor': cmbadfval, 'currency': cmbcurrency, 'theme': cmbvaltheme, 'language': cmbvallang, 'customerName': custname, 'lat1': lat1, 'lon1': lon1, 'web': websitetitle, 'zoom': zoom }),
            contentType: 'application/json, charset=utf-8',
            traditional: true,
            success: function (data) {
                //do something
            }
        });
这是我的控制器

    public ActionResult SaveRecords(string volumeDecimalFactor, string amountDecimalFactor, string currency, string theme, string language, string customerName, double? lat1, double? lon1, string web, double? zoom)
    {
         //when i'm on my local machine i can get double values without problem.
         //when i published on server i cannot get values and return to me null!
    }
编辑

这是来自谷歌浏览器网络标签的请求负载

amountDecimalFactor: "2"
currency: "4"
customerName: "Fuel Card System"
language: "1"
lat1: "41.071789"
lon1: "28.980325"
theme: "4"
volumeDecimalFactor: "2"
web: "WebProject"
zoom: "5.2

请注意,我的本地PC和服务器位于不同的国家/地区。

为避免此类情况,请始终在一个字符串中生成您的
JSON
,并将其发送到
控制器。在您的情况下,您可以执行以下操作:

<script type="text/javascript">
var cmbvdf = $('#cmbvolDec').data('kendoComboBox');
var cmbvdfval = cmbvdf.value();
var cmbadf = $('#cmbamtDec').data('kendoComboBox');
var cmbadfval = cmbadf.value();
var cmbCur = $('#cmbCurrency').data('kendoComboBox');
var cmbcurrency = cmbCur.value();
var cmtheme = $('#cbmTheme').data('kendoComboBox');
var cmbvaltheme = cmtheme.value();
var cmblang = $('#cmbLanguage').data('kendoComboBox');
var cmbvallang = cmblang.value();
var custname = $("#txtCustName").val();
var websitetitle = $("#txtWebName").val();
var zoom = $("#txtZoom").val();


var lat1 = $("#txtLat1").val();
var lon1 = $("#txtLon1").val();

  var json = {
              cmbvdfval : cmbvdfval,
              cmbadfval : cmbadfval,
              cmbcurrency : cmbcurrency ,
              cmbvaltheme : cmbvaltheme ,
              cmbvallang : cmbvallang ,
              custname : custname ,
              websitetitle : websitetitle  ,
              zoom : zoom ,
              lat1 : lat1 ,
              lon1 : lon1 
             };

    $.ajax({
        url: '@Url.Action("SaveRecords", "Setting")',
        type: 'post',
        dataType: "json",
        data: { "json": JSON.stringify(json)},
        success: function (result) {
             //do something
        },
        error: function (error) {
             console.log(error)
        }
      });

</script>

请使用Chrome开发者工具(网络选项卡)向我们显示发布的确切有效负载。
var lon1=$(“#txtLon1”).val()那可能是
lon1
a
string
吗?如何将其转换为
双精度
?因为它在本地计算机上工作,而不是在服务器上工作(在您提到的另一个国家/地区),因此可能是此解决方案中提到的区域性问题:它被标记为重复问题,因为此问题在此处已经有答案:。如果您查看了此答案,如果你把这段代码放在构造器或main的开头,它会根据当地文化调整你的程序。Thread.CurrentThread.CurrentCulture=System.Globalization.CultureInfo.InvariantCulture;
using System.Web.Script.Serialization;

[HttpPost]
public ActionResult SaveRecords(string json)
{

        var serializer = new JavaScriptSerializer();
        dynamic jsondata = serializer.Deserialize(json, typeof(object));

        //Get your variables here from AJAX call
        var zoom = jsondata["zoom"];
        var lat1 =jsondata["lat1"];

        //Do something with your variables here    

    return Json("Success");
}