在本地 JavaScript 文件中调用外部 PHP 文件
Calling an external PHP file within a local JavaScript file?
我的网站上有一个HTML表单,可以提交所有信息(按提交后),同时保持在同一页面上。JavaScript 文件启用此功能,因此在您填写并按提交后,模块会淡出并感谢您提交您的信息,同时保持在同一页面上。
现在在启用该函数的 JS 中,我必须调用发送表单的实际 PHP。
当它位于我的服务器内部时,那行代码如下所示:
var result= postData(data,'./form.php"');
if (result !=null){
$('#form').html('<img src="./images/thankyou.png"></img>');
现在这工作得很好。我不得不将该PHP移动到另一台服务器 http://www.somesite.com/php/action.php
我怎么能称之为PHP?我试过了
var result= postData(data,'http://www.somesite.com/php/form.php"');
它确实有效。让它工作的最简单方法是什么?
这就是您使用 AJAX 的目的。 这些答案假设您正在处理同一个域。
简单的方法
使用AJAX的最简单方法是使用jQuery,但这并不是绝对必要的(见下文)。 http://www.queness.com/post/160/create-a-ajax-based-form-submission-with-jquery
通用示例:
$.ajax({
url: "test.html",
context: document.body
}).done(function() {
$(this).addClass("done");
});
http://api.jquery.com/jQuery.ajax/
不太容易的方法
如果你不想使用jQuery,你可以不用它。 http://www.webreference.com/programming/javascript/ajax_forms/index.html
示例网页
<p><html><br/>
<head><br/>
<title>Form Posts with Ajax</title><br/>
<script type="text/javascript" src="js/Ajax.js"></script><br/>
<script type="text/javascript" src="js/Post.js"></script><br/>
</head><br/><br/>
<body><br/><br/>
<form action="bridge.php" method="post" onsubmit="Post.Send(this); return false;"><br/>
Name:<br/><input type="text" name="name" /><br/>
<br/><br/><br/>
Message:<br/><textarea name="message"></textarea><br/>
<br/><input type="submit" value="submit" /><br/>
</form><br/><br/>
</body><br/>
</html></p>
示例 JavaScript
var Ajax = new Object();
Ajax.isUpdating = true;
Ajax.Request = function(method, url, query, callback)
{
this.isUpdating = true;
this.callbackMethod = callback;
this.request = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP");
this.request.onreadystatechange = function() { Ajax.checkReadyState(); };
if(method.toLowerCase() == 'get') url = url+"?"+query;
this.request.open(method, url, true);
this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
this.request.send(query);
}
Ajax.checkReadyState = function(_id)
{
switch(this.request.readyState)
{
case 1: break;
case 2: break;
case 3: break;
case 4:
this.isUpdating = false;
this.callbackMethod(this.request.responseXML.documentElement);
}
}
听起来您正在尝试将表单数据从一个域上下文提交到另一个服务器。您可以使用JSONP或跨域JavaScript来执行此操作。
function sendFormData(urlToSendTo) {
var script = document.createElement("script");
script.setAttribute("type","text/javascript");
script.setAttribute("src", urlToSendTo);
document.getElementsByTagName("head")[0].appendChild(script);
}
$('form').click(function() {
src="http://www.example.com/php/action.php?name=" + $(this).find('[name="name"]').val() + "&email=" + $(this).find('[name="email"]');
sendFormData(src);
return false; // if this doesn't work, try event.preventDefault();
});
如果您确实尝试将数据从 http://domain.com 加载的网页发送到托管在 http://example.com 上的 PHP 页面,这是无需重新加载页面即可将数据发送到服务器的唯一方法。如果 PHP 页面位于同一服务器上,则 @msigman 发布的其他解决方案将起作用。
尝试这种方式:
在本地服务器中:<script type="text/javascript" src="path/to/external/php/file"></script>
并修改 php 文件:
<?
Header("content-type: application/x-javascript");
//your php codes here as normal
//your dispalying resoursec here in this format: echo "document.write('"what you want to display'")";
?>
这个外部php文件将输出一个javascript文件到你的本地服务器。
- 从.js文件调用html中的js函数
- 可以't在Wordpress中从HTML中的JS文件调用函数
- 从HTML中的外部JS文件调用函数
- 从angularjs文件调用apicontroller时未发现错误
- 无法从 jquery 中的外部文件调用特定内容
- 如何检查该函数是否从外部js文件调用
- 如何在 jQuery 中使用 eval 从不同的文件调用另一个函数
- 从 PHP 文件调用 js 函数
- 在Rails中使用remote:true在Chrome中有效,但在Safari中无效——从js.erb文件调用succe
- 从外部Javascript文件调用方法
- 从单个angularjs文件调用所有控制器
- 从.ascx文件调用Javascript函数时出错
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 从另一个文件调用时出现Javascript作用域错误
- 从一个 Javascript 文件中从另一个 Javascript 文件调用函数
- 如何从另一个.js文件调用.js
- 从另一个文件调用函数
- 从 erb 文件调用 js 函数
- 使用 Node js 从另一个文件调用两个文件
- 从 rails 中的不同 coffeescript 文件调用函数