Проблем с примерният проект

15 views
Skip to first unread message

Ilian Iliev

unread,
Feb 11, 2012, 11:22:53 AM2/11/12
to Mobile Development Course
Здравейте,

Аз имам за проект "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.

Благодаря предварително.

Ivan Todorov

unread,
Feb 11, 2012, 11:59:24 AM2/11/12
to Mobile Development Course
Здравей,

Аз също се борих около 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 :)

Ilian Iliev

unread,
Feb 11, 2012, 2:20:52 PM2/11/12
to Mobile Development Course
Благодаря ти.
Ще изпробвам и тези неща :)

Поздрави.

Димитър Данаилов

unread,
Feb 11, 2012, 2:58:28 PM2/11/12
to Mobile Development Course
Има две грешки поне според мен в кода, които сте дали.

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
});

jakomen

unread,
Feb 11, 2012, 4:54:32 PM2/11/12
to Mobile Development Course
ето ка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'];

Ilian Iliev

unread,
Feb 12, 2012, 6:09:42 AM2/12/12
to Mobile Development Course
А това dataType е типът, който трябва да ни върне заявката ли?
Т.е. ако заявката връща нещо с dataType казваме в какъв формат ни го
връща ли, за да знае jQuery-то как да ни го парсне?
Понеже с contentType до колкото знам казваме какъв тип данни подаваме.

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'];

Димитър Данаилов

unread,
Feb 12, 2012, 7:47:20 AM2/12/12
to Mobile Development Course
Reply all
Reply to author
Forward
0 new messages