2

I am loading a .php file via an ExtJS AJAX call like this:

menuItemApplication.header.on('click', function() {             
    Ext.Ajax.request({
        url: 'content/view_application.php',
        success: function(objServerResponse) {
            var responseText = objServerResponse.responseText;
            regionContent.update(responseText);
            var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
            while(scripts=scriptsFinder.exec(responseText)) {
                eval(scripts[1]);
            }
        }
    });
});

Javascript in the loaded .php file executes fine:

<script type="text/javascript">
     regionContent.update('changed region content from within application view');
</script>

But if the Javascript is being generated via PHP, it is not executed:

<?php
echo "<script type=\"text/javascript\">\n";
echo "regionContent.update('changed region content from within application view')';\n";
echo "</script>\n";
?>

Yes the responses are the same, as seen in the Firebug Net panel, here with Javascript which works:

alt text

And here with PHP-generated Javascript, which does not work:

alt text

How can I get the PHP-generated Javascript to execute?

2 Answers 2

4

Those responses aren't the same. Check the '; versus ; at the end there.

<?php
echo "<script type=\"text/javascript\">\n";
echo "regionContent.update('changed region content from within application view')';\n";
echo "</script>\n";
?>

Versus

<?php
echo "<script type=\"text/javascript\">\n";
echo "regionContent.update('changed region content from within application view');\n";
echo "</script>\n";
?>
Sign up to request clarification or add additional context in comments.

1 Comment

Its such an easy mistake to make. I'm surprised the error console didn't let you know what's up.
2

There's an extra quote in your PHP code, causing the quotes in Javascript to work incorrectly; instead of:

echo "regionContent.update('changed region content from within application view')';\n";

You need:

echo "regionContent.update('changed region content from within application view');\n";

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.