Проблема с получением вызова jQuery .get (ajax) - PullRequest
0 голосов
/ 05 августа 2011

ОК, поэтому я немного схожу с ума. Я пытаюсь сделать простую вещь, которой я управлял много раз в прошлом, а именно отправлять данные через функцию jquery .get через простой атрибут onClick.

Я проверил, правильно ли загружается файл jquery.js через панель «net» firebug, я попытался загрузить скрипт 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 ]

2 голосов
/ 05 августа 2011

Причина, по которой это не работает, заключается в том, что productString существует в пространстве имен, определенном анонимной функцией, которую вы передаете $(document).ready.Когда браузер воздействует на клик, он ищет функцию в глобальном пространстве имен и поэтому не находит ее.Поскольку функция не зависит от какой-либо обработанной DOM, вам не нужно заключать ее в $(document).ready.

1 голос
/ 05 августа 2011

Попробуйте это.

<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

Вы сделали все это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...