2014-09-02 3 views
1

J'ai une fonction js:recevoir une chaîne vide après ajax post

Javascript:

function Post() 
{ 
    var table = $('#table4').dataTable(); 
    var data = table.$('input:text').serialize(); 
    console.log(data); 

    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("SaveList")', 
     data: JSON.stringify(data), 
     dataType: "json", 
     contentType: 'application/json', 
     success: function() { 
      alert('success'); 
     }, 
     error: function() { 
      alert('error'); 
     } 

    }); 
} 

Action:

[HttpPost] 
    public ActionResult SaveList(string serializedString) 
    { 
     var a = serializedString; 
     return RedirectToAction("CustomersList"); 
    } 

Le problème est que l'action reçoivent une sting console.log(data) montre, qu'il y a du contenu et si je mets le point d'arrêt sur le contrôleur, il s'arrête mais serializedString est vide. où pourrait être un problème? Merci!

+0

Essayez 'dataType: 'text'' et enlever' contentType'. –

+0

@FlorianGl - Dire 'dataType:" text "' n'aidera pas. Le problème est la lecture des données sur le serveur, ne traitant pas la réponse. – Quentin

+0

@FlorianGl - Supprimer le 'contentType' serait stupide. Le 'data' contient JSON. Si vous supprimez le 'contentType', vous devrez reformater les données afin qu'elles soient des données codées en forme au lieu de données codées JSON. – Quentin

Répondre

1

Retirez deux déclaration de la fonction ajax "dataType: "JSON" et contentType: 'application/json'," essayer cette

function Post() 
{ 
    var table = $('#table4').dataTable(); 
    var data = table.$('input:text').serialize(); 
    console.log(data); 

    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("SaveList")', 
     data: JSON.stringify(data), 

     success: function() { 
      alert('success'); 
     }, 
     error: function() { 
      alert('error'); 
     } 

    }); 
} 
+0

Je ne voulais pas voter vers le bas, je ne peux pas sembler le changer ... alors désolé, je vais essayer à nouveau plus tard – zzipper72

0

Merci les gars, je résolu un problème. Voici mon code pour l'instant, peut-être plus tard je vais le changer.

Javascript:

function Post() 
{ 
    var table = $('#table4').dataTable(); 
    var data = table.$('input:text').serialize(); 
    console.log(datas); 
    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("SaveList")', 
     data: data, 
     datatype: 'json', 
     success: function() { 
      alert('success'); 
     } 
    }); 
} 

Action:

public ActionResult SaveList(List<string> inputgrams, List<string> id) 
    { 
     ... 
    }