2012-03-28 21 views
6

dönüş JSON Bir yöntemini içeren bir web hizmeti:ASMX webcoder XML yerine

[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); 
    } 
} 

yöntem düzgün nesne serileştirir ama FireBug içinde tepkisini görmek, bunun gibi görünür:

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

kullandığım jQuery yöntemdir Kendo veri kaynağı

$(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"] 
    }); 
}); 

yukarıdaki kod s nasıl ne jQuery yapıyorum ve hata olay çağrısı bu hata var ne zaman

SyntaxError: JSON.parse: unexpected character 

nasıl JSON içine yukarıdaki verileri dönüştürebilir yüzden jQuery bunu kullanabilir? Ve nerede yanlış gidiyorum?

+0

? Mantıklı değil. – Joe

+0

tamam ben jsonp kaldırmak ama sorun hala aynı plz çözmek –

+0

WCF ve JSONP kullanarak onun çok güzel kombinasyonu kullanarak mükemmel bir şekilde çalışmanın başka bir yolunu buldum ve mükemmel çalışabilir –

cevap

8

Sen yöntemin ResponseFormat belirtmek gerekir:

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

Not: Benzer konularla bu soruya varıyoruz başkalarının iyiliği için, bu POST kullanarak olmanın gerektiğini not etmek de önemlidir istekleri, GET istekleri. Bakınız: Eğer, doğru bir yöntem demeyeceğiz yayınlanmıştır jQuery dayanarak JSON Hijacking and How ASP.NET AJAX 1.0 Avoids these Attacks


DÜZENLEME

. Sen C# GetMovies adlı bir yöntem tanımlar, ancak jQuery `Movies 'adlı bir yöntemi çağırmaya çalışıyor.

Bu:

url: "/MovieService.asmx/Movies" 

bu geçmek olmalı: Neden burada JSONP kullandığınız

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

ve bir GET kullanmayın – Joe

+0

hiçbir şey aynı sorun yok canım –

+1

@HaseebKhan, her şeyden önce, bana canım deme. İkincisi, JSON biçimlendirilmiş veriyi döndürmenin doğru yolu budur. Lütfen cevabımı inceleyin ve test ortamınızda doğru şekilde uyguladığınızı doğrulayın. –

İlgili konular