Ich habe eine .NET-Methode, die meiner DB ein neues Mitglied hinzufügt. Dies geschieht durch eine AJAX-Anfrage. Ich habe das funktioniert richtig, aber ich habe Probleme, die richtige Antwort Nachricht, so dass ich die richtigen Nachrichten an den Benutzer drucken kann.Zurückgeben von Json anstelle von XML mit Umbraco Base
Meine Methode zur Zeit wie folgt aussieht:
public static string MemberRegister(int process)
{
//here we find form values posted to the current page
HttpRequest post = HttpContext.Current.Request;
//get values from ajax URL
var name = post["name"];
var email = post["email"];
var username = post["username"];
var password = post["password"];
//check if email exists
if (Member.GetMemberFromEmail(email) == null)
{
MemberType userMemberType = new MemberType(1111); //id of membertype 'demo'
Member newMember = Member.MakeNew(name, userMemberType, new umbraco.BusinessLogic.User(0));
newMember.AddGroup(MemberGroup.GetByName("Active").Id);
newMember.Email = email;
newMember.Password = password;
newMember.LoginName = username;
newMember.Save();
return "success";
}
else
{
return "emailError";
}
}
Mein Ajax Code wie folgt aussieht:
// submit
$registerForm.submit(function() {
$loader.show();
jQuery.ajax({
url: "/processform.aspx",
type: "POST",
data: $(this).serialize()
}).complete(function(response) {
alert(response.responseText);
if(response.responseText === "success") {
$registerSuccess.fadeIn();
} elseif(response.responseText === "emailError") {
$registerEmailError.fadeIn();
} else {
$registerError.slideDown();
}
$loader.hide();
});
return false;
});
Zum Beispiel, wenn das Mitglied alle bereit, existiert es die reponse zurück:
<value>emailError</value>
Ich möchte nur E-MailError nicht die Wert-Tags als auch zurückgeben. Wie mache ich das?
Fiddler (Raw):
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Sun, 25 Mar 2012 20:59:54 GMT
Content-Length: 25
<value>emailError</value>
POST http://domain.com/base/Forms/MemberRegister/process.aspx HTTP/1.1
Host: domain.com
Connection: keep-alive
Content-Length: 125
Origin: http://domain.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
Content-Type: application/json; charset=UTF-8
Accept: application/json, text/javascript, */*; q=0.01
Referer: http://domain/register.aspx
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: ASP.NET_SessionId=ys4mmhsn2mpqcpja1iyjg04m; UMB_UPDCHK=1; __utma=256732567.15732944.1331581910.1332617890.1332627641.11; __utmc=256732567; __utmz=256732567.1331581910.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); UMB_UCONTEXT=12621b40-16fe-4422-a027-cf4fa68fe03d; __utma=176230262.1311679778.1332368941.1332694687.1332708163.12; __utmb=176230262.3.10.1332708163; __utmc=176230262; __utmz=176230262.1332368941.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
__VIEWSTATE=%2FwEPDwUENTM4MWRkEytUM47m6NUA6dpfOudOh9t51j6okfG%2BQhu4Em%2B26KU%3D&name=ppp&email=ppp&username=ppp&username=ppp
Dank Robert
immer noch den Wert Tags zurück. Irgendwelche anderen Vorschläge? Was ist der Unterschied bei der Verwendung von reponse.d? – Robert
Wenn ein JSON zurückgegeben wird, sieht es aus wie {"d": "Erfolg"} (Fiddler wird Ihnen helfen, die genaue Antwort der Anfrage zu sehen) –
Ok Ich kann mit Fiddler sehen, dass der Antwort-Header aussieht, Content-Type: Text/XML; charset = utf-8, daher gibt es immer noch XML zurück. – Robert