2015-10-06 3 views
0

Я прочитал каждую ссылку на «Недействительный примитив JSON» без каких-либо успехов, поэтому у меня нет выбора, кроме как опубликовать мои собственные. Я сократил свой код до минимального минимума и все еще получаю ошибку. Вот «голый минимум»:Ошибка «Неверная ошибка JSON-примитива» от вызова MVC AJAX

var dataObject = { 
    'FirstName': $('#FirstName').val(), 
    'LastName': $('#LastName').val() 
}; 

$.ajax({ 
    type: 'POST', 
    url: '@Url.Action("Submit", "Home")', 
    contentType: 'application/json;', 
    dataType: 'json', 
    data: dataObject, 
    success: function (result) { 
     debugger; 
     alert('Success'); 
    }, 
    error: function (response) { 
     debugger; 
     alert('Error'); 
    } 
}); 

Я также попытался заменить DataObject с:

var dataObject = { 
    'FirstName': 'ES', 
    'LastName': 'Dictor' 
}; 

не давая никаких изменений в моих результатах.

Независимо от того, что я делаю, я получаю (Chrome консоль):

response: 
Object {readyState: 4, responseText: "<!DOCTYPE html> 
↵<html> 
↵ <head> 
↵  <titl…nStep step, Boolean& completedSynchronously) 
↵-->", status: 500, statusText: "Internal Server Error"} 

и если я смотрю на response.responseText я вижу:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Invalid JSON primitive: FirstName.</title> 

Я считаю, что я попробовал все в этом точка, поэтому, вероятно, это нечто простое, что мне просто не хватает. Надеясь, что кто-то может понять, чего я не могу.

+0

@DavidTansey HTML просто дает мне ошибку. Если бы это было не так, я бы ожидал JSON. – ESDictor

+0

Нам нужно будет посмотреть, что делает ваш пост на задней панели. Он может неправильно обращаться к базе данных или ссылаться на страницы, которые не существуют, например, что может привести к ошибке внутреннего сервера. – Demodave

+0

@ Demodave мое предположение заключалось в том, что ошибка «неправильный json primitive» означала, что она не дошла до этого. Я неверен? – ESDictor

ответ

1

Вы размещение назад объект, не JSon, так что вам нужно удалить опцию contentType: 'application/json;', АЯКСА так, что он использует по умолчанию (который 'application/x-www-form-urlencoded; charset=UTF-8') В качестве альтернативы вы должны использовать JSON.stringify() для преобразования объекта в строку JSON.

Сторона примечания: Нет необходимости указывать имена свойств. Это может быть

var dataObject = { 
    FirstName: $('#FirstName').val(), 
    .... 
+0

Вы правы, что нет необходимости указывать имена свойств, но на самом деле это не имеет никакого эффекта. :) – ESDictor

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