2015-10-06 59 views
0

我讀過「無效的JSON基元」的每一個引用沒有成功,所以我別無選擇,只能發佈我自己的。我將代碼降低到最低限度,並且仍然出現錯誤。這裏的「最低限度」:從MVC AJAX調用中獲取「無效的JSON基元」錯誤

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' 
}; 

給予不改變我的結果。

不管我做什麼,我得到(鉻控制檯):

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基元」錯誤意味着它沒有那麼遠。我錯了嗎? – ESDictor

回答

1

你回發的對象,而不是JSON,所以你需要,以便它使用默認的(這是'application/x-www-form-urlencoded; charset=UTF-8')去除contentType: 'application/json;', AJAX選項或者你需要使用JSON.stringify()對象轉換成JSON字符串。

附註:沒有必要引用屬性名稱。它可以是

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

您說得對,沒有必要引用屬性名稱,但實際上並沒有這樣做的效果。 :) – ESDictor

相關問題