SOAP Javascript / jQuery
Ik heb een ASP.NET Webservice gemaakt daar wil ik nu met jQuery een functie aanroepen. Wat ik doe...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script type="text/javascript">
var address = "http://localhost:56777/BMI.asmx/Test";
function test() {
$.ajax({
type: "POST",
url: address,
data: { 'x': 'adasd' },
dataType: "jsonp",
contentType: "application/json; charset=utf-8",
succes: function(data) {
alert(data.x);
}, error: function() {
alert("ERROR");
}
});
}
</script>
var address = "http://localhost:56777/BMI.asmx/Test";
function test() {
$.ajax({
type: "POST",
url: address,
data: { 'x': 'adasd' },
dataType: "jsonp",
contentType: "application/json; charset=utf-8",
succes: function(data) {
alert(data.x);
}, error: function() {
alert("ERROR");
}
});
}
</script>
Wat ik nu doe ik voer functie Test uit van mijn webservice ik krijg wel een response maar wat het probleem is als ik die response krijg. zet die het in een .js bestandje waardoor die hij de verkregen XML als een error ziet:
Test:1Uncaught SyntaxError: Unexpected token <
Weet iemand hoe ik dit moet doen ik heb al heel lang zitten Googlen maar krijg maar niet het antwoord.
Groeten,
Dennis
Gewijzigd op 02/02/2012 16:30:39 door Dennis Sluijk
Ik denk dat ut het meer te maken heeft met de response die je krijgt uit je script
Gewijzigd op 02/02/2012 16:48:27 door Ger van Steenderen
Code (php)
1
2
2
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">adasd</string>
<string xmlns="http://tempuri.org/">adasd</string>
Dit krijg ik terug
Gewijzigd op 02/02/2012 16:50:05 door Dennis Sluijk
Maar je zegt tegen jquery dat die json terug moet krijgen, of zie ik dat verkeerd?
Jah klopt, vind ik ook al zo raar. Ik snap er op het moment even niets meer van.
Hoezo vind je het raar? je zegt tegen jQuery dat hij JSON terug krijgt, maar hij krijgt HTML terug. Dan zegt jQuery dat dat niet kan.
Hoe ziet jouw ASP code er uit?
ten tweede, ik zou geen xml gebruiken. JSON is veel beter.
Het probleem is dat ik jsonp moet gebruiken omdat het cross domain is.
Even kort: JSON = JSONP
Als je dat als datatype terug wilt, moet je dat ook gaan geven. In asp.NET kun je ook heel prima wrappers gebruiken voor JSON. Als het goed is heb je ook een writer om dat te genereren.
Source Code:
WebService1.asmx.cs
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
namespace Webservice
{
/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld()
{
return "Hello World";
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
namespace Webservice
{
/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld()
{
return "Hello World";
}
}
}
Web.config
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0"?>
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>
Ik heb een pagina waarmee ik met jquery functie HelloWorld wil uitvoeren.
Omdat die pagina op een andere domein staat moet ik jsonp gebruiken (Volgens Google).
Ik zeg in mijn HelloWorld method dat ik de response format graag in json wil laten terug komen.
Ik krijg nu nog steeds XML terug:
Code (php)
1
2
2
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">Hello World</string>
<string xmlns="http://tempuri.org/">Hello World</string>
Daardoor krijg ik waarschijnlijk deze error:
HelloWorld:1Uncaught SyntaxError: Unexpected token <
Weet iemand een manier waardoor ik json als response terug krijg??
Want op dit moment zie ik nog nergens een referentie van en naar. Die code uit WebService zal wel als JSON komen maar ergens anders gaat er iets mis.
Het bovenste heb ik op mijn stage gemaakt daardoor kan ik helaas niet bij de bestanden de reactie later heb ik thuis gemaakt maar ik heb precies het zelfde gedaan als op mijn stage maar in plaats van BMI nu Webservice1
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var address = "http://localhost:56777/BMI.asmx/HelloWorld";
function test() {
$.ajax({
type: "POST",
url: address,
data: "{}",
dataType: "jsonp",
contentType: "application/json; charset=utf-8",
succes: function(data) {
alert(data.x);
}, error: function() {
alert("ERROR");
}
});
}
function test() {
$.ajax({
type: "POST",
url: address,
data: "{}",
dataType: "jsonp",
contentType: "application/json; charset=utf-8",
succes: function(data) {
alert(data.x);
}, error: function() {
alert("ERROR");
}
});
}
Hier ben ik ook bezig met een afstudeerproject en toevallig heb ik ook te maken met JSON en APS.net.
Ik heb dit anders opgelost.
Ik heb in mijn mvc3 een controller gemaakt die als SOAP service werkt. De reden dat ik een controller gebruik en geen WCF is puur flexibliteit. In een controller kan je alle kanten op.
Controller:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
[HttpPost]
public ActionResult GetString (int id)
{
// connection met db
return Json( new { naam = "MijnNaam" });
}
public ActionResult GetString (int id)
{
// connection met db
return Json( new { naam = "MijnNaam" });
}
JavaScript:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var d = "id=1";
$.ajax({
type: "POST",
url: actionURL, // <-- zoiets --> http://localhost/Home/GetString/
data: d, // hier kan ook parameters mee sturen met je POST
success: function (r) {
strNaam = r.naam;
},
complete: function () {
// strNaam ergens tonen
},
error: function (req, status, error) {
// hier een foutmelding laten zien
}
});
$.ajax({
type: "POST",
url: actionURL, // <-- zoiets --> http://localhost/Home/GetString/
data: d, // hier kan ook parameters mee sturen met je POST
success: function (r) {
strNaam = r.naam;
},
complete: function () {
// strNaam ergens tonen
},
error: function (req, status, error) {
// hier een foutmelding laten zien
}
});
en dat is alles :)
Gewijzigd op 03/02/2012 10:49:51 door Dashti webdeveloper
Is jouw webservice extern? (op een ander domein)
Ja dat is de bedoeling. Hij moet bereikbaar zijn vanaf een android telefoon.
Toevoeging op 07/02/2012 14:10:19:
In welke dll zit Json class?