用ajax更改脚本标记,为什么还在工作?

时间:2012-10-23 16:59:24

标签: php javascript jquery ajax

您好我的问题是如何解决问题...朋友有一个代码如下:

<div id="result">
    <script type="text/javascript">
        function selectColor(value){
            return "#319336";
        }
    </script>
</div>

并在结果中调用jQuery .load()调用一个PHP文件,该函数发送一个像这样的JavaScript函数

<?php
    function returnFuntion(){
        return '<script type="text/javascript">
            function selectColor(value){
                switch(value){
                    case "a":
                        return "#000000";
                        break;
                    case "b":
                        return "#FFFFFF";
                        break;
                    default:
                        return "#319336";
                }
        }</script>';
    }
?>

我不知道这是如何工作的,但适用于所有浏览器,我的朋友说“它的工作原理并不用担心”。怎么了?为什么JavaScript会识别新代码而不是旧代码?这是一个正确的方法吗?最初的问题是JavaScript函数返回必须改变从PHP获得的MySQL值。

4 个答案:

答案 0 :(得分:1)

这些是函数声明,解析器在读取任何代码之前总是读取这些声明。

因此,在定义第二个函数时,只需覆盖第一个函数

  function a(){

        alert('Hello');
    }

    function a(){

       alert('Second Function !!');
    }

    a(); // Call-- 

FIDDLE

答案 1 :(得分:0)

理想情况下,脚本应该完美地运行,但第一个脚本真的不是在div中编写javascript的好方法。如果它不起作用,可能是因为函数在加载之前被调用。第二个很好,因为php正在格式化javascript,并准备打印在页面的某个位置。要记住的关键是首先应该加载/打印函数,然后调用它以避免任何错误。

答案 2 :(得分:0)

@luismy,在服务器和客户端之间交换数据而不是脚本总是更好。我只是好奇为什么你不在客户端实现UI逻辑,在服务器上实现应用程序逻辑?特别是对于这个例子,即使进行XHR调用也没有意义。

答案 3 :(得分:0)

如果您要加载JavaScript,请使用getScript()

让php代码返回内容就像编写外部文件一样。确保也设置内容类型。