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