SORU
12 HAZİRAN 2011, Pazar


Jquery Ajax json Java eklentisi Gönderme

Herkese selam asp.net bir Java Eklentisi için bir JSON nesnesi göndermek için tryng ediyorum.

Benim json bu gibi görünüyor:

var markers = { "markers": [
  { "position": "128.3657142857143", "markerPosition": "7" },
  { "position": "235.1944023323615", "markerPosition": "19" },
  { "position": "42.5978231292517", "markerPosition": "-3" }
]};

Bu json2.js benim json nesne stringyfy için kullanıyorum.

ve Java eklentisi bir WordPress kullanmak benim için sonrası için kullanıyorum.

  $.ajax({
        type: "POST",
        url: "/webservices/PodcastService.asmx/CreateMarkers",
        data: markers,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data){alert(data);},
        failure: function(errMsg) {
            alert(errMsg);
        }
  });

Aşağıdaki hatayı alıyorum:

"İlkel geçersiz JSON:

Bu mesaj ile ilgili bir sürü buldum ve çok yaygın bir sorun gibi görünüyor ama denemeden hiçbir sorunu giderir.

Sunucuya deftere ne firebug zaman bu gibi görünüyor:

markers[0][position]=128.3657142857143&markers[0][markerPosition]=7&markers[1][position]=235.1944023323615&markers[1][markerPosition]=19&markers[2][position]=42.5978231292517&markers[2][markerPosition]=-3

Çağrılan Java eklentisi benim görevim

[WebMethod]
public string CreateMarkers(string markerArray)
{
    return "received markers";
}

Yapacağınız her türlü yardım çok makbule geçer, bu konuda mesajların bir yeri vardır biliyorum, ama gerçekten hiçbir şey yardımcı oldu buldum.

CEVAP
12 HAZİRAN 2011, Pazar


Json2.js veri stringify kullanarak bahsetmiştin, ama Yayınlanan veriler zaten görmüş olabilirsiniz JSON URLEncoded görünüyor, ama this post about the invalid JSON primitive JSON URLEncoded neden kapsar.

13* *ederim. ASP.NET güvenlik için otomatik olarak JSON serisini isteği SONRASI veri, eğer başın elle seri ve Gönderme Bir JSON dizeye ASP.NET, aslında olmam için JSON seri hale getirmek sizin JSON dize seri hale getirilmiş.

Biraz yeni bir tasarım öneririm:

var markers = [{ "position": "128.3657142857143", "markerPosition": "7" },
               { "position": "235.1944023323615", "markerPosition": "19" },
               { "position": "42.5978231292517", "markerPosition": "-3" }];

$.ajax({
    type: "POST",
    url: "/webservices/PodcastService.asmx/CreateMarkers",
    // The key needs to match your method's input parameter (case-sensitive).
    data: JSON.stringify({ Markers: markers }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data){alert(data);},
    failure: function(errMsg) {
        alert(errMsg);
    }
});

Geçersiz JSON ilkel sorunun önlenmesi için kilit bir WordPress kullanmak data parametre için bir JSON dize, bir JavaScript nesnesi geçirmek için, bu bir WordPress kullanmak verileri URLEncode girişimi yok.

Sunucu tarafı, senin yöntemin giriş maç verilerin şekil parametreleri geçerken.

public class Marker
{
  decimal position { get; set; }
  int markerPosition { get; set; }
}

[WebMethod]
public string CreateMarkers(List<Marker> Markers)
{
  return "Received "   Markers.Count   " markers.";
}

Ayrıca eğer tercih ederseniz, bir dizi Marker[] Markers gibi kabul edebilirsiniz. ASMX ScriptServices kullandığı deserializer (Javascriptserializeryapıcı) oldukça esnek ve belirttiğiniz sunucu tarafında bu tür giriş verileri dönüştürmek için elinden geleni yapacaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • Michael Lummio

    Michael Lumm

    25 Mayıs 2007
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006