让jQuery .get(ajax)调用工作的问题

时间:2011-08-05 11:28:50

标签: jquery ajax json get

好的,所以我有点疯了。我正在尝试做一个我过去曾多次管理的简单事情,那就是通过简单的onClick属性通过jquery .get函数发送数据。

我已经检查过jquery.js文件是通过firebug的“net”面板正确加载的,我已经尝试从标签内加载jquery脚本,也就是在标签之前;总是使用$(document).ready(function(){}包裹脚本。

我只是不知道还有什么可以检查以找到错误。

错误列在firebug的控制台中,因为“....未定义”

下面你可以找到我正在使用的代码,任何帮助都会很棒;我希望我只是愚蠢而错过了一个;什么的。

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Untitled Document</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            function productString(product) {
                $.get("http://<? echo ROOT; ?>includes/forms.php", { product: product }, function(data) {
                    //$('#popup-content').html(data);
                    alert('Load was performed.');
                });
            }
        });
    </script>
</head>

<body>
    <form>
        <input type="radio" value="tester" onClick="productString(this.value)">
        <label>Test 1</label>
    </form>

    <a href="#" name="test" onClick="productString('tester2')">This is a test</a>

</body>

提前感谢任何帮助社区。

2 个答案:

答案 0 :(得分:2)

这不起作用的原因是productString存在于您传递给$(document).ready的匿名函数定义的命名空间中。当浏览器作用于onclick时,它正在全局命名空间中查找该函数,因此找不到它。由于该函数不依赖于已经处理的任何DOM,因此您无需将其包装在$(document).ready中。

答案 1 :(得分:1)

试试这个。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>
<script type="text/javascript">
    function productString(prod) {
        $.get("http://<? echo ROOT; ?>includes/forms.php", { product: prod }, function(data) {
            //$('#popup-content').html(data);
            alert('Load was performed.');
        });
    }
</script>

如果prod是字符串。

<强>更新

请注意,我做了三处更改。

  1. 以较少的方式调用jQuery CDN我怀疑 https 是否是您的基础协议。
  2. 删除了document.ready包装,因为它完全没有意义。
  3. 将函数参数名称从 product 更改为prod
  4. 你做过这些吗?