Php 跨域Ajax的动态脚本标记不起作用

Php 跨域Ajax的动态脚本标记不起作用,php,javascript,ajax,cross-domain,Php,Javascript,Ajax,Cross Domain,我正在尝试为跨域ajax使用动态脚本标记,因为我不能在需要的网站上使用PHP(我们使用的是CMS,所以我们可以使用HTML/Javascript,但不能使用PHP) 问题是,这两个脚本(javascript和php)都能独立工作,这意味着脚本标签添加得很好,php脚本在自己启动时,可以根据需要工作 但是在添加脚本标记时(使用.appendChild),GET请求似乎没有得到处理 有没有办法让它发挥作用 以下是简化的代码: PHP: Javascript: function dlPj() {

我正在尝试为跨域ajax使用动态脚本标记,因为我不能在需要的网站上使用PHP(我们使用的是CMS,所以我们可以使用HTML/Javascript,但不能使用PHP)

问题是,这两个脚本(javascript和php)都能独立工作,这意味着脚本标签添加得很好,php脚本在自己启动时,可以根据需要工作

但是在添加脚本标记时(使用.appendChild),GET请求似乎没有得到处理

有没有办法让它发挥作用

以下是简化的代码:

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');
    }
  }
}
非常感谢你的帮助


编辑:问题已解决。问题如下:我在A标记上添加了一个onclick事件,以便在用户下载附加文件之前获得有关用户的一些信息。所以我把它留在了return true;,这样他填好表格后就可以下载文件了。将onclick事件更改为“dlPj();return false;”可以解决问题。

试试这个,它在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);

好的,这就是stackoverflow的工作流程,答案就在这里


问题如下:我在一个标签上添加了一个onclick事件,这样我就可以在一个用户下载一个附加文件之前获得他的一些信息。所以我把它留在了return true;,这样他填好表格后就可以下载文件了。将onclick事件更改为“dlPj();return false;”可以解决此问题。

脚本类型应为“text/javascript”。那是错别字吗?哦,对了,那是错别字。但这并没有改变问题的任何方面:-)实际上,浏览器可能会拒绝获取任何类型无法识别的脚本。你用“text/javascript”试过了吗?我试过了。弗洛里安,我投你的票。这是我在这里能为你做的最多的了:-)好的。我已经做了你建议的改变。问题是,问题仍然在于添加脚本标记时不会处理GET请求。也许有办法调试这个?我正在使用Firebug,但我想我看不出GET请求是否得到处理。你是对的,但剩余的是正确的,我将更改它:|@Florian,很抱歉头部的评论,但是如果你按照我的方式设置src,它将被称为@Florian,看起来是
s.type='txt/javascript'
导致了trouble@Mic:代码对字段进行了编码,但仍然没有看到任何请求。下面是添加在前面的脚本标记:
。s.type='txt/javascript'已更改为'text/javascript',感谢您回答我的问题。我投你的票。
  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);