Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

Ajax in setTimeout throws error

#48

This is an interesting and slightly difficult problem becuase what is apparently happening in the threaded environment is that


for(var prop in foo)

will iterate over properties of the Java Object. Even though the object is created in the script context as a simple object {bar:"abc"}; This happens when we call $.ajax({}) because the jquery ajax method calls $.extend wich iterates over the property and throws

js: Java class "[B" has no public instance field or method named "nodeType".

Exception in thread "Thread-8" org.mozilla.javascript.EvaluatorException: Java class "[B" has no public instance field or m
        at org.mozilla.javascript.tools.ToolErrorReporter.runtimeError(ToolErrorReporter.java:144)
        at org.mozilla.javascript.Context.reportRuntimeError(Context.java:922)
        at org.mozilla.javascript.Context.reportRuntimeError(Context.java:978)
        at org.mozilla.javascript.Context.reportRuntimeError2(Context.java:948)
        at org.mozilla.javascript.NativeJavaArray.get(NativeJavaArray.java:103)
        at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:1601)
        at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1398)
        at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1384)
        at org.mozilla.javascript.gen.c3._c63(Unknown Source)
        at org.mozilla.javascript.gen.c3.call(Unknown Source)
        at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
        at org.mozilla.javascript.gen.c3._c63(Unknown Source)
        at org.mozilla.javascript.gen.c3.call(Unknown Source)
        at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
        at org.mozilla.javascript.gen.c3._c230(Unknown Source)
        at org.mozilla.javascript.gen.c3.call(Unknown Source)
        at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
        at org.mozilla.javascript.gen.c10._c2(Unknown Source)
        at org.mozilla.javascript.gen.c10.call(Unknown Source)
        at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:108)
        at org.mozilla.javascript.gen.c2._c868(Unknown Source)
        at org.mozilla.javascript.gen.c2.call(Unknown Source)
        at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:108)
        at org.mozilla.javascript.gen.c2._c9(Unknown Source)
        at org.mozilla.javascript.gen.c2.call(Unknown Source)
        at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003)
        at org.mozilla.javascript.gen.c2.call(Unknown Source)
        at org.mozilla.javascript.Context$1.run(Context.java:488)
        at org.mozilla.javascript.Context.call(Context.java:499)
        at org.mozilla.javascript.Context.call(Context.java:486)
        at org.mozilla.javascript.JavaAdapter.callMethod(JavaAdapter.java:548)
        at adapter1.run()
        at java.lang.Thread.run(Unknown Source)
js: Java class "[B" has no public instance field or method named "nodeType".

make: *** [runtest] Error 3

thatcher@Flare /opt/apache-tomcat-6.0.16/webapps/env-js

Another interesting thing is that if you call


print(foo);

on the object before the iteration of properties it acts like a normal javascript object.

This is a major blocker in several areas, not just jquery.

Reported by Thatcher · February 17th, 2009 @ 07:30 AM

State: resolved
Milestone: 1.0 Release
Assigned to: Thatcher Thatcher

Activity

  1. Thatcher
    Thatcher

    ps to reproduce, just set isLocal to false in envjs/bin/jquery-1.2.6-test.js so that ajax is evaluated.

    February 17th, 2009 @ 07:31 AM

  2. Thatcher
    Thatcher
    • Milestone set to 1.0 Release
    • State changed from new to resolved
    • Assigned user set to Thatcher

    this was corrected by making sure all strings are created with +'' in platform/rhino.js where java is being used directly.

    September 9th, 2009 @ 04:37 PM

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.