Why would PHP-generated Javascript not work in file loaded via AJAX?
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.res开发者_如何学GoponseText;
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:
And here with PHP-generated Javascript, which does not work:
How can I get the PHP-generated Javascript to execute?
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";
?>
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";
精彩评论