2012-02-10 11 views
5

से तारों की वापसी सरणी मैं एक jQuery AJAX कॉल के माध्यम से एक एमवीसी फ़ंक्शन से तारों की एक सरणी वापस करना चाहता हूं।एमवीसी से jQuery एएसपी.NET

मेरे क्लाइंट साइड कोड है:

function get_categories() { 
    var url = "/Profile/GetCharacters"; 
    $.post(url, function (data) { 
    alert(data); 
}); 

लेकिन मैं सरणी तत्व नहीं पढ़ सकता। alert(data) में यह हमेशा system.array[] और alert(data[0]) में यह कहता है s (यानी system.array [] में पहला अक्षर) और सरणी तत्व नहीं।

यहाँ .. मेरे सर्वर साइड कोड के संस्करण सरल है मूल कारण बड़े पैमाने पर जटिल :)

public Array GetCharacters() 
    { 

     var ret = new string[10]; 
     ret[0]="abc"; 
     ret[1] = "def"; 
     ret[2] = "ghi"; 
     return (ret); 
    } 

है, लेकिन यह देता है "System.String []" के बजाय और एक ही समस्या है जब व्यक्तिगत मूल्यों

तक पहुँचने
+1

क्यों नहीं JSON लौट सकते हैं और पार्स कि: आप JSON, जो आप के लिए एक वास्तविक जावास्क्रिप्ट सरणी वस्तु बनाना चाहिए पार्स करने के लिए आवश्यकता हो सकती है? –

+1

कृपया अपना सर्वर साइड कोड (अपनी एक्शन विधि) पोस्ट करें। मुझे लगता है कि आप एक JSON serialized सरणी के बजाय 'system.array [] 'वाली स्ट्रिंग को वापस कर रहे हैं। –

+0

मैं जेसन का उपयोग नहीं कर रहा हूं जो मेरी योजना बी है यदि यह – deepakgates

उत्तर

12

आप JSON लौट सकते हैं json वस्तुओं को क्रमानुसार करने एक पुस्तकालय का उपयोग कर सकते है।

उदाहरण के लिए, आप निम्नलिखित नियंत्रक कार्रवाई करने के लिए एक Ajax अनुरोध कर सकता है:

public JsonResult GetMyData() 
{ 
    SomeClass s = new SomeClass(); 
    s.Property1 = "value"; 
    s.Property2 = "another value"; 

    return Json(s, JsonRequestBehavior.AllowGet); //you will need the AllowGet option to return data to a GET request 
} 

फिर, अपने जावास्क्रिप्ट नियंत्रक (jQuery के अजाक्स समारोह का उपयोग करके) एक Ajax अनुरोध कर सकता है:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
}; 

$.ajax({ 
    type: 'GET', 
    url: '/ControllerName/GetMyData/', 
    success: function (data) { onSuccess(data); } 
}); 

संपादित करें: जब कोई सरणी लौटाती है, या सूची आपको पारंपरिक: अजाक्स कॉल के लिए सही विकल्प जोड़ने की आवश्यकता होगी, जैसे:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
}; 

$.ajax({ 
    type: 'GET', 
    url: '/ControllerName/GetMyData/', 
    success: function (data) { onSuccess(data); }, 
    traditional: true 
}); 

मुझे 100% यकीन नहीं है कि क्यों (मुझे यकीन है कि कोई हमें अंदर भर देगा), लेकिन इसने मुझे अतीत में फिट किया है।

एक और संपादित करें:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
    var arr = JSON.parse(data); 
}; 
+0

धन्यवाद का उपयोग कर रहा हूँ !! इसने काम कर दिया – deepakgates

1

आप अपने बैकएंड पक्ष पर क्या चल रहे हैं?

असल में आप जेसन या एक्सएमएल का उपयोग कर अपने सरणी को क्रमबद्ध करना चाह सकते हैं।

यदि यह पीएचपी है, यहां से jQuery .post API

उदाहरण एक उदाहरण है: test.php पृष्ठ पर पोस्ट और सामग्री जो json प्रारूप में लौटा दिया गया है हो जाता है।

PHP कोड

<?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>

jQuery कोड

$.post("test.php", { "func": "getNameAndTime" }, 
function(data){ 
    console.log(data.name); // John 
    console.log(data.time); // 2pm 
}, "json"); 

यदि यह जावा आप की तरह Googles' gson

+0

एएसपी.नेट एमवीसी 3 – deepakgates

संबंधित मुद्दे