2015-06-05 5 views
2

Мне нужно получить доступ к данным, хранящимся в localstorage, на стороне сервера, но это еще одна история.Передача localstorage контроллеру с помощью Ajax

У меня есть эта кнопка, на мой взгляд:

<div style="float:right;"> 
    <input id="btnTest" type="button" name="test Json Button" value="test Json Button" onclick="sendLocalStorage();" class="btn btn-default" /> 
</div> 

Это JS функция:

function sendLocalStorage() { 

    var JsonLocalStorageObj = JSON.stringify(localStorage); 
    //var test = ["test1", "test2", "test3"]; 

    $.ajax({ 
     url: "/MyControllersName/Test", 
     type: "POST", 
     dataType: 'json', 
     data: JsonLocalStorageObj, 
     contentType: "application/json; charset=utf-8", 
     beforeSend: function() { alert('sending') }, 
     success: function (result) { 
      alert(result.Result); 
      localStorage.clear(); 
     } 
    }); 
}; 

И этот метод тестирования контроллера:

[HttpPost] 
    [WebMethod] 
    public ActionResult Test(string JsonLocalStorageObj) 
    { 
     string x = JsonLocalStorageObj; 
     //deserialize here 
     return RedirectToAction("Index"); 
    } 

Когда я бегу JSON.stringify(localStorage); в хромированной разработчика инструменты, я вижу данные как ожидалось, однако, когда я отлаживаю свой контроллер JsonLocalStorageObj всегда null. В качестве теста я использовал контрольный массив, который был прокомментирован, и установил параметр на контроллере, чтобы принять List<string>, и это произошло через заполненный.

Проникновение проблемы с JSON.stringify(localStorage);?

ответ

2

Вы не указали имя параметра вашего действия (JsonLocalStorageObj), и ваш контент и тип данных были неправильными. Попробуйте изменить яваскрипта код следующим образом:

function sendLocalStorage() { 

    var JsonLocalStorageObj = JSON.stringify(localStorage); 
    //var test = ["test1", "test2", "test3"]; 

    $.ajax({ 
     url: "/MyControllersName/Test", 
     type: "POST", 
     data: { JsonLocalStorageObj: JsonLocalStorageObj }, 
     success: function (result) { 
      alert(result); 
     } 
    }); 
} 
+0

просто примечание стороны, мне не нужно, чтобы stringify LocalStorage, как это уже в формате JSON, понял это после. – JsonStatham

Смежные вопросы