Динамический тег сценария для междоменного Ajax не работает - PullRequest
0 голосов
/ 20 июля 2011

Я пытаюсь использовать динамический тег сценария для междоменного ajax, поскольку я не могу использовать PHP на веб-сайте, где это необходимо (мы используем CMS, поэтому мы можем использовать HTML / Javascript, но нетPHP).

Дело в том, что оба скрипта работают хорошо (javascript и php) сами по себе, это означает, что тег script хорошо добавляется, и скрипты PHP, когда запускаются сами по себе, работают по мере необходимости.

Но похоже, что запрос GET не обрабатывается при добавлении тега сценария (с использованием .appendChild).

Есть ли способ заставить его работать?

Вотупрощенный код:

PHP:

$email = $_GET['email'];
$source = $_GET['source'];
echo 'callback({"value": "true"});';
// sending the email through php

Javascript:

function dlPj() {
  // Prompt the user for his email
  var email = prompt('Enter your email', 'your email');
  // If the script tag already exists, delete it
  if (document.getElementById('script-pj') != null) {
    var script_pj = document.getElementById('script-pj');
    document.getElementsByTagName("head")[0].removeChild(script_pj);
  }
  // Create the script tag to call the PHP script
  var s = document.createElement('script');
  s.type = 'txt/javascript';
  s.id = 'script-pj';

  s.src = 'http://www.something.com/bel/pj.php?';
  s.src += 'email=' + email;
  s.src += '&source=' + document.location.href + '?';

  document.getElementsByTagName("head")[0].appendChild(s);
}

function callback(value) {
  if (value == null) {
    alert('error');
  }
  else {
    if (value.value == "true") {
      alert('working');
    }
    else {
      alert('not working');
    }
  }
}

Помощь с благодарностью.

Редактировать: проблема решена. Проблема заключалась в следующем: я добавил событие onclick для тега A, чтобы я мог получить некоторую информацию о пользователе до того, как он загрузит прикрепленный файл.Поэтому я оставил его при возврате true ;, чтобы он мог загрузить файл после заполнения формы.Изменение события onclick на «dlPj (); return false;»решает проблему.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

Хорошо, чтобы это правильно соответствовало рабочему процессу stackoverflow, ответ есть.

Проблема заключалась в следующем: я добавил событие onclick для тега A, чтобы я мог получить некоторую информацию о пользователе до того, как он загрузит прикрепленный файл. Поэтому я оставил его при возврате true ;, чтобы он мог загрузить файл после заполнения формы. Изменение события onclick на «dlPj (); return false;» решает проблему.

0 голосов
/ 20 июля 2011

Попробуйте, это работает в Chrome:

  var email = prompt('Enter your email', 'email@company.com');
  // If the script tag already exists, delete it
  if (document.getElementById('script-pj') != null) {
    var script_pj = document.getElementById('script-pj');
    document.getElementsByTagName("head")[0].removeChild(script_pj);
  }
  // Create the script tag to call the PHP script
  var s = document.createElement('SCRIPT');
  s.id = 'script-pj';
  s.src = 'http://www.something.com/bel/pj.php?' +
                'email=' + encodeURIComponent(email) + 
                '&source=' + encodeURIComponent(document.location.href);

  document.getElementsByTagName("head")[0].appendChild(s);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...