2012-01-03 13 views
5

मैं हो रही है जब मैं "sdata" लौटने के लिए निम्न कोड में "System.ArgumentException: pagenum: अमान्य JSON आदिम":System.ArgumentException: अमान्य JSON आदिम त्रुटि

function getPageData() { 
pagenum = parseInt(eSc("#resultsBtn").attr("data-pagenum")); 
if (pageName === "Home") { 
    scrollPath = "/Home/GetResults/"; 
    sdata = { "pagenum": pagenum, "sortType": sortType }; 
} 
else if (pageName === "Search") { 
    scrollPath = "/SearchAjax/GetResultsKeyword/"; 
    sdata = { "pagenum": pagenum, "sortType": sortType, "keyword": keyword }; 
} 
else if (pageName === "Cat") { 
    scrollPath = "/SearchAjax/GetResultsCategory/"; 
    sdata = { "pagenum": pagenum, "sortType": sortType, "ID": categoryId, "Level": level }; 
} 
else if (pageName === "Merchant") { 
    scrollPath = "/SearchAjax/GetResultsMerchant/"; 
    sdata = { "pagenum": pagenum, "sortType": sortType, "ID": merchantId }; 
} 

}

और pageload पर init समारोह:

function init(a, b, c, d, e, f, g) { 
getPageData(); 
eSc.ajax({ 
    type: 'POST', 
    url: scrollPath, 
    data: sdata, 
    success: function (data) { 
     eSc("#moreResults").html(data); 
    } 
}); 

}

उपयोगकर्ताओं न एक मुद्दा एक को देखने के और सही डेटा अभी भी वापस आ गया है, फिर भी जब भी कोई हमारी साइट से उत्पादन में अधिक डेटा लोड करता है तो मुझे एक त्रुटि ईमेल मिल रहा है (विकास में ऐसा नहीं होता है इसलिए समस्या निवारण के लिए मुश्किल है)। फायरबग में निरीक्षण करते समय, मुझे लगता है कि सही डेटा पास हो गया है। तो मुझे अभी भी यह त्रुटि क्यों मिल रही है ?!

यह क्यों हो सकता है कि यह क्यों हो रहा है?

+3

आप इस पोस्ट उपयोगी अगर तुम क्यों उपयोग करने के बारे में उत्सुक हैं मिल सकती है 'JSON.stringify' समस्या का हल। कॉम/एएसएमएक्स-स्क्रिप्ट्स सर्विस-गलती-अमान्य-जेसन-आदिम/ –

उत्तर

14
function init(a, b, c, d, e, f, g) { 
getPageData(); 
eSc.ajax({ 
    type: 'POST', 
    url: scrollPath, 
    contentType: 'application/json', 
    dataType: 'json', 
    data: JSON.stringify(sdata), 
    success: function (data) { 
     eSc("#moreResults").html(data); 
    } 
}); 

जेसन प्रारूप में डेटा प्रारूपित करने के लिए JSON.stringify का उपयोग करके जेसन प्रारूप में sData पास करें।

यह मेरे मामले में काम करता है। उम्मीद है कि यह आपके मामले में काम करेगा।

0

jQuery यूआरएल एन्कोडेड योजना का उपयोग कर $ .ajax() के डेटा पैरामीटर को क्रमबद्ध करता है, भले ही सामग्री-प्रकार निर्दिष्ट किया गया हो। मैं ajax में सामग्री प्रकार का उपयोग करने के लिए सलाह देते हैं:

function init(a, b, c, d, e, f, g) { 
getPageData(); 
eSc.ajax({ 
    type: 'POST', 
    url: scrollPath, 
    contentType: 'application/json', 
    dataType: 'json', 
    data: sdata, 
    success: function (data) { 
     eSc("#moreResults").html(data); 
    } 
}); 

इसके अलावा, आप डेटा पैरामीटर में उद्धरण चिह्नों का उपयोग करने की आवश्यकता है। आपके संस्करण में यह JSON स्ट्रिंग के बजाय एक जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक है।

function getPageData() { 
pagenum = parseInt(eSc("#resultsBtn").attr("data-pagenum")); 
if (pageName === "Home") { 
    scrollPath = "/Home/GetResults/"; 
    sdata = '{ "pagenum":'+ pagenum +' , "sortType":'+ sortType +' }'; 
} 
else if (pageName === "Search") { 
    scrollPath = "/SearchAjax/GetResultsKeyword/"; 
    sdata = '{ "pagenum": ' + pagenum + ', "sortType": '+ sortType +', "keyword": ' + keyword +' }'; 
} 
else if (pageName === "Cat") { 
    scrollPath = "/SearchAjax/GetResultsCategory/"; 
    sdata = '{ "pagenum":'+ pagenum + ', "sortType":'+ sortType +', "ID":'+ categoryId +', "Level": '+level+' }'; 
} 
else if (pageName === "Merchant") { 
    scrollPath = "/SearchAjax/GetResultsMerchant/"; 
    sdata = '{ "pagenum":'+ pagenum +', "sortType":'+ sortType + ', "ID":'+ merchantId +'}'; 
} 

मुझे आशा है कि इससे मदद मिलती है।

+0

बढ़िया है, हालांकि मुझे निम्न त्रुटि मिल रही है (भले ही प्रतिक्रिया फायरबग में सही है) – Ortal

+0

क्षमा करें, बहुत जल्द प्रवेश करें: "महान, हाव er मुझे निम्न त्रुटि मिल रही है (भले ही प्रतिक्रिया फायरबग में सही है) "सिंटेक्स त्रुटि: JSON.parse: अप्रत्याशित चरित्र" मैंने सामग्री को टिप्पणी करने का प्रयास किया (मुझे जेसन वापस नहीं मिल रहा है) और एक ही समस्या है। " – Ortal

+0

मैंने कोड संपादित किया, क्योंकि + चिह्न गुम थे। कृपया इसे अभी आज़माएं। – tildy

1
  var param = "{'type': '" + type + "'}"; 
      var paramSfy = JSON.stringify({ type: type}) 
      var src = '/Physical_Inventory/Home/runZeroQtyDLIUpdate'; 
      $.ajax({ 
       type: "POST", 
       url: src, 
       dataType: "json", 
       contentType: "application/json; charset=utf-8", 
       data: paramSfy, 

मैं है कि क्या देखा,

अगर आप contentType उपयोग कर रहे हैं: "application/json; charset = utf-8" फिर डेटा स्ट्रिंग के रूप उम्मीद है:

"{ "Param" : "Value" }" 

इस JSON.stringify फ़ंक्शन का उपयोग कर सबसे अच्छा किया जाता है।

यदि आप कोई सामग्री प्रकार सेट नहीं करते हैं तो डिफ़ॉल्ट है, "एप्लिकेशन/एक्स-www-form-urlencoded; charset = UTF-8" यदि आप इस सामग्री प्रकार का उपयोग करते हैं, तो param और value एम्बेड किए गए हैं यूआरएल में, और डेटा तो जैसे ajax में सेट किया जा सकता: http: // encosia

data: {Param : Value}, 
संबंधित मुद्दे