2012-03-28 24 views
6

के बजाय JSON मैं एक वेब सेवा है कि एक विधि शामिल है:ASMX वेब सेवा वापसी एक्सएमएल

[WebMethod] 
public string Movies() 
{ 
    using (var dataContext = new MovieCollectionDataContext()) 
    { 
     var query = dataContext.Movies.Select(m =>new{m.Title,m.ReleaseDate}).Take(20); 
     var serializer = new JavaScriptSerializer(); 
     return serializer.Serialize(query); 
    } 
} 

विधि ठीक से वस्तु को धारावाहिक, लेकिन जब मैं FireBug में प्रतिक्रिया को देखते हैं, यह इस तरह दिखता है:

<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">[{"Title":"SQL","ReleaseDate":"\/Date(1224007200000)\/"},{"Title":"Termonator Salvation","ReleaseDate":"\/Date(1224007200000)\/"}]</string> 

यहाँ jQuery विधि जिसमें मैं का उपयोग है केंडो डेटा स्रोत

$(function() { 
    alert("Welcome To Kendo"); 
    var dataSource = new kendo.data.DataSource(
       { 
        transport: { 
         read: { 
          type: "POST", 
          dataType: "json", 
          url: "/MovieService.asmx/Movies" 
          // contentType: "application/json; charset=utf-8" 

         } 
        }, 
        change: function (e) { 
         alert(e); 

        }, 
        error: function (e) { 
         alert(e[2]); 
        }, 
        pageSize: 10, 
        schema: { 
         data: "d" 

        } 


       }); 

    $("#MovieGridView").kendoGrid({ 
     dataSource: dataSource, 
     height: 250, 
     scrollable: true, 
     sortable: true, 
     pageable: true, 
     columns: [ 
      { field: "Title", title: "Movie Name" }, 
      { field: "ReleaseDate", title: "Movie Release" } 
      ], 
     editable: "popup", 
     toolbar: ["create"] 
    }); 
}); 

ऊपर कोड रों कैसे क्या मैं jQuery में कर रहा हूँ और जब त्रुटि घटना कॉल मैं यह त्रुटि आई

SyntaxError: JSON.parse: unexpected character 

मैं कैसे JSON में उपरोक्त डेटा परिवर्तित कर सकते हैं तो मैं यह jQuery में उपयोग कर सकते हैं? और मैं गलत कहां जा रहा हूँ?

+0

तुम क्यों JSONP यहाँ का उपयोग कर रहे हैं? यह समझ में नहीं आता है। – Joe

+0

ठीक है, मैं jsonp को हटाता हूं लेकिन समस्या अभी भी एक ही है कृपया इसे हल करें –

+0

मुझे डब्ल्यूसीएफ और जेएसओएनपी का उपयोग करके इसे करने का एक और तरीका मिला है, यह बहुत अच्छा संयोजन है और पूरी तरह से काम करता है –

उत्तर

8

आप विधि के ResponseFormat निर्दिष्ट करना होगा:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string GetMovies() { 
} 

नोट: जो दूसरों इसी तरह के मुद्दों के साथ इस सवाल पर पहुंचने के लिए, यह भी ध्यान रखें कि आप POST का उपयोग कर किया जा रहा है चाहिए महत्वपूर्ण है अनुरोध, GET अनुरोध नहीं। देखें: JSON Hijacking and How ASP.NET AJAX 1.0 Avoids these Attacks


संपादित

jQuery है कि आप पोस्ट, आपको बुला रहा नहीं कर रहे हैं सही विधि के आधार पर। आप सी # GetMovies नामक एक विधि को परिभाषित करता है, फिर भी आपका jQuery 'मूवीज़' नामक विधि को कॉल करने का प्रयास कर रहा है।

यह:

url: "/MovieService.asmx/Movies" 

इस में बदल जानी चाहिए:

url: "/MovieService.asmx/GetMovies" 
+0

के साथ जेसन की आवश्यकता है और जीईटी का उपयोग न करें – Joe

+0

कुछ भी नहीं एक ही समस्या प्रिय –

+1

@ हसीबखन, सबसे पहले, मुझे प्रिय मत कहो प्रिय--)। दूसरा, जेएसओएन स्वरूपित डेटा वापस करने का यह सही तरीका है। कृपया मेरे उत्तर की समीक्षा करें, और पुष्टि करें कि आपने इसे अपने परीक्षण वातावरण में ठीक से कार्यान्वित किया है। –