2015-10-14 5 views
2

Я совершенно не знаком с javascript и не могу найти решение. У меня есть следующий код.Как изменить формат вывода serializeObject?

<form class="edit-task-form"> 
     <legend>Create Task</legend> 
     <label>Task</label> 
     <input type="text" name="task" /> 
     <hr /> 
     <button type="submit" class="btn">Create</button> 
    </form> 

var taskDetails = $(ev.currentTarget).serializeObject(); 
var task = new Task; 
task.save(taskDetails, { 
    success: function(task) { 
     alert(task.toJSON()); 
    } 
}); 
console.log(taskDetails); 

$.fn.serializeObject = function() { 
var o = {}; 
var a = this.serializeArray(); 
$.each(a, function() { 
    if(o[this.name] !==undefined) { 
     if(!o[this.name].push) { 
      o[this.name] = [o[this.name]]; 
     } 
     o[this.name].push(this.value || ''); 
    } 
    else { 
     o[this.name] = this.value || ''; 
    } 
}); 
return o; 

Выход составляет: Объект {задача: "fasdfasd"}

Я хотел бы, чтобы это было: Object { "задачи" : "fasdfasd"}

Как я могу начать «задание» появляться в кавычках?

Большое спасибо!

Дэвид

+0

Вам не нужно вручную добавить кавычки в имени свойства объекта, если преобразование в формат JSON будет автоматически там, если с помощью объекта для отправки данных, которые лежат в основе api, просто отправит имя свойства в виде строки. –

ответ

0

У вас есть эта функция:

$.fn.serializeObject = function() { 
var o = {}; 
var a = this.serializeArray(); 
$.each(a, function() { 
    if(o[this.name] !==undefined) { 
     if(!o[this.name].push) { 
      o[this.name] = [o[this.name]]; 
     } 
     o[this.name].push(this.value || ''); 
    } 
    else { 
     o[this.name] = this.value || ''; 
    } 
}); 
return o; 

вам нужно с висящий его к этому:

$.fn.serializeObject = function() { 
var o = {}; 
var a = this.serializeArray(); 
$.each(a, function() { 
    if(o['"'+this.name+'"'] !==undefined) { 
     if(!o['"'+this.name+'"'].push) { 
      o['"'+this.name+'"'] = [o[this.name]]; 
     } 
     o['"'+this.name+'"'].push(this.value || ''); 
    } 
    else { 
     o['"'+this.name+'"'] = this.value || ''; 
    } 
}); 
return o; 

Просто добавьте ключ котировки

0

Одно из решений:

$.fn.serializeObject = function() { 
var o = {}; 
var a = this.serializeArray(); 
$.each(a, function() { 
    if(o[this.name] !==undefined) { 
     if(!o[this.name].push) { 
      o[this.name] = ['"' + o[this.name] + '"' ]; //<--------- 
     } 
     o[this.name].push(this.value || ''); 
    } 
    else { 
     o[this.name] = this.value || ''; 
    } 
}); 
return o; 
} 

$.fn.serializeObject = function() { 
 
var o = {}; 
 
var a = this.serializeArray(); 
 
$.each(a, function() { 
 
    if(o[this.name] !==undefined) { 
 
     if(!o[this.name].push) { 
 
      o[this.name] = ['"' + o[this.name] + '"' ]; //<--------- 
 
     } 
 
     o[this.name].push(this.value || ''); 
 
    } 
 
    else { 
 
     o[this.name] = this.value || ''; 
 
    } 
 
}); 
 
return o; 
 
} 
 
var val = $('.edit-task-form').serializeObject(); 
 
document.write('<pre>'+ JSON.stringify(val , null , ' ') + '</pre>') 
 
$('form').submit(function(evt){ 
 
    evt.preventDefault(); 
 
document.write('<pre>'+ JSON.stringify($(this).serializeArray() , null , ' ') + '</pre>') 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form class="edit-task-form"> 
 
     <legend>Create Task</legend> 
 
     <label>Task</label> 
 
     <input type="text" name="task" /> 
 
     <hr /> 
 
     <button type="submit" class="btn">Create</button> 
 
    </form>

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