Загрузка fb:profile-рис. Facebook через Ajax в сайте Подключения Facebook

Мы просто кодируем служебные методы для каждого из типов исключений, которые мы хотим выдать. Вот некоторые примеры:

jint throwNoClassDefError( JNIEnv *env, char *message )
{
    jclass exClass;
    char *className = "java/lang/NoClassDefFoundError";

    exClass = (*env)->FindClass( env, className);
    if (exClass == NULL) {
        return throwNoClassDefError( env, className );
    }

    return (*env)->ThrowNew( env, exClass, message );
}

jint throwNoSuchMethodError(
        JNIEnv *env, char *className, char *methodName, char *signature )
{

    jclass exClass;
    char *exClassName = "java/lang/NoSuchMethodError" ;
    LPTSTR msgBuf;
    jint retCode;
    size_t nMallocSize;

    exClass = (*env)->FindClass( env, exClassName );
    if ( exClass == NULL ) {
        return throwNoClassDefError( env, exClassName );
    }

    nMallocSize = strlen(className) 
            + strlen(methodName)
            + strlen(signature) + 8;

    msgBuf = malloc( nMallocSize );
    if ( msgBuf == NULL ) {
        return throwOutOfMemoryError
                ( env, "throwNoSuchMethodError: allocating msgBuf" );
    }
    memset( msgBuf, 0, nMallocSize );

    strcpy( msgBuf, className );
    strcat( msgBuf, "." );
    strcat( msgBuf, methodName );
    strcat( msgBuf, "." );
    strcat( msgBuf, signature );

    retCode = (*env)->ThrowNew( env, exClass, msgBuf );
    free ( msgBuf );
    return retCode;
}

jint throwNoSuchFieldError( JNIEnv *env, char *message )
{
    jclass exClass;
    char *className = "java/lang/NoSuchFieldError" ;

    exClass = (*env)->FindClass( env, className );
    if ( exClass == NULL ) {
        return throwNoClassDefError( env, className );
    }

    return (*env)->ThrowNew( env, exClass, message );
}

jint throwOutOfMemoryError( JNIEnv *env, char *message )
{
    jclass exClass;
    char *className = "java/lang/OutOfMemoryError" ;

    exClass = (*env)->FindClass( env, className );
    if ( exClass == NULL ) {
        return throwNoClassDefError( env, className );
    }

    return (*env)->ThrowNew( env, exClass, message );
}

Тот путь, легко найти их, Ваш редактор завершения кода поможет Вам ввести их, и можно передать простые параметры.

я уверен, что Вы могли развернуть это для обрабатывания объединенных в цепочку исключений или других более сложных подходов. Этого было достаточно для удовлетворения наших потребностей.

6
задан mbrevoort 22 September 2009 в 21:58
поделиться

2 ответа

First attempt

Not sure if this helps a lot, but here's an article on Ajax + FBML: http://wiki.developers.facebook.com/index.php/FBJS#Creating_FBML_Elements

В частности, возможно, вы можете использовать метод setInnerFBML ()


Follow up

Итак, я думаю, что инициализация функция анализирует файл fbml. Итак, очевидный вопрос: как заставить библиотеку javascript facebook повторно анализировать fbml (или просто анализировать новый fbml), если вы вставляете fbml после инициализации.

Похоже, эта ветка может помочь: http://forum.developers.facebook.com/viewtopic.php?id=22245

Here's what appears to be the relevant code although there is more context at the forum:

if ( FB.XFBML.Host.parseDomTree )
  setTimeout( FB.XFBML.Host.parseDomTree, 0 );
8
ответ дан 8 December 2019 в 17:24
поделиться

FB.XFBML.Host.parseDomTree у меня не работал. Возможно, это изменилось в новом api. Что сработало, так это:

FB.XFBML.parse(document.getElementById('foo'))

или

FB.XFBML.parse()

если вы хотите разобрать всю страницу.

6
ответ дан 8 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: