2013-04-15 48 views
4

我其中有一個文本框,當其含量的變化,將tricker控制這個javascript函數:jQuery的阿賈克斯200 OK JSON.ParseError

page參數document.URL作爲控制不附帶任何.asxc頁和fieldValue是文本框的值。

function UpdateFieldsOnListSelection(page, fieldValue) { 
    $.ajax({ 
     type: "POST", 
     url: page + "/IsSelectedListPictureLibrary", 
     data: { "libraryInfo": fieldValue }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      alert("Success!"); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert("jqXHR: " + jqXHR.status + "\ntextStatus: " + textStatus + "\nerrorThrown: " + errorThrown); 
     } 
    }); 
}; 

它不斷拋出這個錯誤:

jqXHR: 200
textStatus: parsererror
errorThrown: SyntaxError: JSON.parse: unexpected character

代碼爲IsSelectedListPictureLibrary

[WebMethod] 
public static bool IsSelectedListPictureLibrary(string libraryInfo) 
{ 
    if (string.IsNullOrEmpty(libraryInfo)) return false; 

    var common = new Utility(); 
    var storedLibraryInfo = common.GetStoredLibraryInfo(libraryInfo); 

    if (storedLibraryInfo == null) return false; 

    var web = SPContext.Current.Site.OpenWeb(storedLibraryInfo.WebId); 
    var spList = web.Lists[storedLibraryInfo.LibraryId]; 

    if (spList.BaseTemplate == SPListTemplateType.PictureLibrary) 
    { 
     web.Dispose(); 
     return true; 
    } 

    web.Dispose(); 
    return false; 
} 

我在阿賈克斯試圖改變jsonjsonp,但同樣的錯誤發生。
我試過改變data的格式。

任何想法?

+0

響應是什麼樣的? –

+1

嘗試從Ajax參數中移除'contentType'和'dataType'並讓它們自動識別 – Catalin

+0

@RaraituL這有效。你可以請你的評論作爲答案,所以我可以作爲答案。 – diceler

回答

18

嘗試從阿賈克斯參數刪除contentTypedataType,讓他們可以識別自動

+0

爲我解決。謝謝! –

+1

我已經工作了2天,試圖讓每個人的「解決方案」解決這個問題。你的建議是爲我修好的。非常感謝你。 – ihatemash

+0

@ihatemash我很高興它幫助你! – Catalin

0

不確定[WebMethod],但它似乎存在問題,它與該方法的輸出有關。它必須是一個格式良好的JSON,才能使用ajax方法。 所以我會做的是檢查在一個單獨的窗口中看到的呼叫,並使用像http://jsonlint.com/這樣的事情,以確保它形成良好。

1

曾與AJAX的「後」命令同樣的問題。

發送了JSON發佈請求,得到了200 OK迴應,但textStatus爲parseerror,errorThrown爲SyntaxError: JSON.parse: unexpected character

這是我的JS代碼:

$.post(url, JSON.stringify(reportVarsJson), function(response) {}, 'json') 
.fail(function(jqXHR, textStatus, errorThrown) { 
    alert('Error saving report request variables:\n\n' + jqXHR.responseText); 
}); 

問題原來是,我的服務器視圖(Django的)返回,其不是一個JSON響應一個空應答。

我改變了我的服務器視圖來返回一個空的JSON響應,一切正常!