Аз имам за проект "Friends", но още от началото се появи проблем,
който вече 2 дни не успявам да разреша и евентуално имам нужда от
малко помощ.
Имам следният код:
$('#register').click(function () {
onRegister();
});
function onRegister() {
var loginUrl = "http://mobilefriends.apphb.com/
MobileFriendsService.svc/register";
var postObject = new Object();
postObject.authCode = "1234567890";
postObject.username = "user765";
$.ajax({
url: loginUrl,
type: "POST",
timeout: 10000,
contentType: "application/json",
data: JSON.stringify(jsonObject),
success: function (sessionID) {
onRegSuccess(sessionID);
},
error: function (error) {
onRegError(error);
}
});
};
function onRegSuccess(sessionID) {
$("#add").html("success");
};
function onRegError(error) {
$("#add").html("error");
};
Проблемът е , че при изпълнението не ми влиза нито в eror фунцията,
нито в success функцията.
Тествам го на Windows Phone емулатор.
Някой може ли да помогне, понеже аз вече доста време не успявам да се
справя.
Имам и още един въпрос - само на мен ли не ми тръгва примерният проект
- Places.
Благодаря предварително.
Аз също се борих около 2 часа да взема някакъв респонс от сървиса :)
Ето няколко съвета:
1. Използвай Chrome или Mozzila с Firebug за разработката. В конзолата
на Chrome можеш да видиш какви заявки и респонси текат. Аз поне не
можах да накарам емулатора да ми казва грешките в javascripta и просто
като има грешка нищо не бачка ама ти няма как да разбереш защо (дори и
за синтактични грешки).
2. PhoneGap изглежда че има някакви проблеми с cross-domain заявките и
Windows Phone. До колкото прочетох из форумите в последната версия
трябва да сетнеш: $.support.cors = true; преди всяка заявка. Тук за
error ми се връщаше No Transport или нещо от сорта.
3. Ето моя код за заявка. Виждам че нямаш dataType и processData. Не
знам за какво са и дали трябват, но ги добавих в някой момент докато
се мъчех :)
$.support.cors = true;
$.ajax({
url: serviceUrl,
type: "POST",
dataType: "json",
contentType: "text/json",
processData: false,
data: JSON.stringify(attributes),
success: function (res) { },
error: function (arg1, arg2) { }
});
4. Най - интересната част - изглежда че във phonegap-1.4.1.js има
някакъв метод който ти прихваща заявките и им сменя contentType-a на
XML (никаква идея защо, видях го в конзолата на Chrome като сравнявах
request-ите). Като резултат сървъра ми връщаше Bad Request. Това го
оправих като закоментирах последния метод от phonegap.js файла :) Не
знам това дали е легално и дали няма да почупи нещо или пък дали ще
работи като се качи на телефона, но на емулатора тръгнаха заявките.
Най-вероятно щом не влизаш нито в success нито в error, java scripta
ти въобще не се изпълнява т.е. имаш грешка в него но телефона си мълчи
за нея. Пробрай да си отвориш страницата в нормален browser и провери.
Hope this helps :)
Поздрави.
1. Илиян добави : dataType: "json"
2. Иван смени от contentType: "text/json" на contentType: "application/
json"
Аз нямам никакъв проблем със следния синтаксис :
$.ajax({
url: action,
type: 'POST',
contentType: "application/json",
timeout: 10000,
dataType: "json",
data: JSON.stringify(userData),
beforeSend: ajaxCallLoader(),
success: ajaxCallSucess,
error : ajaxCallError
});
On Feb 11, 11:54 pm, jakomen <jakom...@gmail.com> wrote:
> ÅÔÏ ËÁk ÓÔÁ×Á ;) ÕÓÐÅÈ
>
> var serviceURL = "http://mobilefriends.apphb.com/
> MobileFriendsService.svc";
>
> $('#buttonRegister').click(function () {
> var userData = {
> "username" : $("#usernameRegister").val(),
> "authCode" : $("#authCode").val()
> };
>
> $.ajax({
> url : serviceURL + "/register",
> type : "POST",
> contentType : "application/json",
> dataType : "json",
> data : JSON.stringify(userData),
> success : ajaxCallSucess,
> error : ajaxCallError
> });
> });
>
> ajaxCallSucess É ajaxCallError ÓÁ ÔÉ ÍÅÔÏÄÉ
> ÍÅÔÏÄÁ ajaxCallSucess ÔÉ ×ÒßÝÁ response ËÏÊÔÏ × ÓÅÂÅ ÓÉ ÉÍÁ SessionID
> - response['sessionID'];