Vrácení stringu JSONP v MVC3 do AJAX – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vrácení stringu JSONP v MVC3 do AJAX – .NET – Fórum – Programujte.comVrácení stringu JSONP v MVC3 do AJAX – .NET – Fórum – Programujte.com

 

daemon
~ Anonymní uživatel
5 příspěvků
25. 6. 2012   #1
-
0
-

Dobrý večer,

potřeboval bych prosím poradit. Pomocí AJAX odesílám přes JSON (v případě IE prohlížeče) data jako parametry přes GET do Controlleru a zpracovávám je a return mi vrací nějaký string, který vypíši do HTML stránky. To není problém.

Problém je v jiných prohlížečích, kde je potřeba použít JSONP. Vše mi funguje, až na vracení stringu(objektu), který se samozřejmě vrátí v JSON a já nevím, jak jej vrátit v JSONP a vypsat ho přes AJAX do HTML.

 Funkční řečení pro IE s použitím JSON:

public JsonResult MojeFce(string aa, string bb)
  {
    /* nějaký kód */
     return Json(new { Message = "Moje zpráva." }, JsonRequestBehavior.AllowGet);
  } 
       var d = new Date(); 
       $.ajax({   
            type: "GET",
            url: "https://000.000.000.000/Slozka/MojeFce",
            case: false,
            crossDomain: true,
            data: "aa=" + $("input[name=aa]").val() + 
                  "&bb=" + $("input[name=bb]").val() +
                  "&callback=" + d.getTime(),  
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success:  
              function (data) 
              {    
                $('.odeslano').html(data.Message); 
                $('.odeslano').css("display", "block");
              },  
            error: function (XMLHttpRequest, textStatus, errorThrown) { },
        });

Pro odeslání v JSONP (funkční ve všech prohlížečích) stačí v JS upravit "dataType".

P.S.: Google mi nějak nepomohl

Omlouvám se za případně špatné zvolenou kategorii dotazu.

Nahlásit jako SPAM
IP: 82.142.123.–
25. 6. 2012   #2
-
0
-

Zdravím,

je skutečně zvláštní, že google nepomohl (problém s angličtinou?). U mě to byla otázka několika vteřin. Je nutné vytvořit vlastní ActionResult (např. http://stackoverflow.com/...jsonp).

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
daemon
~ Anonymní uživatel
5 příspěvků
26. 6. 2012   #3
-
0
-

#2 djanosik
s angličtinou možná :D 

Problém byl v JS v posílaných datech. posílal jsem parametr "callback", který tam samozřejmě neměl, co dělat a dělal v tom paseku:D

A díky za link, taky pomohl;)

"&callback=" + d.getTime(), 
Nahlásit jako SPAM
IP: 82.142.123.–
daemon
~ Anonymní uživatel
5 příspěvků
9. 7. 2012   #4
-
0
-

Dobrý den,

prosím o radu.

Následující kódy jsou funkční v IE9, FF, Chrom a Safari. 

Ale v Opeře se nevrátí výsledek a v IE8 se parametry odesílají  bez url a navíc se neprovede validace. (obnoví se stránka a v adresním řádku zůstane špatná adresa)

Hlavně to  potřebuji rozchodit v IE8.

špatně:
http://mojeadresa.cz/soubor.html?…

správně:
http://jinaadresa.cz/Form/Zpracuj/?…

JS

$(document).ready(function () { 

  // validate
	$("#stiznost").validate({    
				rules: {
                    email: { required: true, email: true,  maxlength: 50},
					predmet: { required: true, maxlength: 50 },	
					text: { required: true, maxlength: 300 }
				},
                submitHandler:function(form) {
				   SubmittingForm();
				}
	});


 // sending
 function SubmittingForm() {

         var d = new Date();   
         jQuery.support.cors = true;
         
           $.ajax({   
            type: "GET",
            url: "https://000.000.000.000/Form/Zpracuj",
            case: false,
            crossDomain: true,
            data: "mail=" + $("input[name=email]").val() + 
                  "&predmet=" + $("input[name=predmet]").val() +
                  "&text=" + $("textarea[name=text]").val() +
                  "&breakcache=" + d.getTime(),  
            dataType: "jsonp",  
            jsonpCallback: "myFunct",
            contentType: "application/json; charset=utf-8",
            success:  
             function myFunct(data)
             {
             alert("ok");               
             },          
            error: function (XMLHttpRequest, textStatus, errorThrown) { },
        }); 
 
    };

});

Děkuji

Nahlásit jako SPAM
IP: 82.142.123.–
daemon
~ Anonymní uživatel
5 příspěvků
18. 7. 2012   #5
-
0
-

stačilo smazat čárku a jede to i v IE7 a dokonce IE6     

error: function (XMLHttpRequest, textStatus, errorThrown) { },

po editaci:

error: function (XMLHttpRequest, textStatus, errorThrown) { }

   

Nahlásit jako SPAM
IP: 82.142.123.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

MVC3 a RequiredAttribute — založil VladislavK

Vrácení pole — založil Janek

Vracení odkazu na objekt — založil x-time

Vrácení hodnoty ve funkci — založil Kuba-$

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý