我想在javascript中编写一个函数,它将调用Getfilename.php并获取在javascript中返回的$ filesArray。
GetFilenme.php是另一个文件,我试图从Config.html
访问它PHP: Getfilename.php
<?php
$dir = 'uploads/';
$dir = $_REQUEST['dir'] ;
$filesArray = array();
$Counter = 0;
$files = scandir($dir);
foreach ($files as &$file)
{
if ($file!='.' && $file!='..' )
{
$filesArray[$Counter] = $file;
echo $filesArray[$Counter].'<br>';
$Counter = $Counter + 1;
}
}
return $filesArray;
?>
答案 0 :(得分:4)
假设您下载并包含jQuery javascript库:
$(function() {
$.get('getfilename.php', { dir : 'path/to/dir' }, function(data) {
// you should now have a json encoded PHP array
$.each(data, function(key, val) {
alert('index ' + key + ' points to file ' + val);
});
}, 'json');
});
这应该是你的PHP(虽然非常不安全):
<?php
$dir = $_REQUEST['dir'] ;
$filesArray = array();
$Counter = 0;
$files = scandir($dir);
foreach ($files as &$file) {
if ($file!='.' && $file!='..' ) {
$filesArray[$Counter] = $file;
echo $filesArray[$Counter].'';
$Counter++;
}
}
echo json_encode($filesArray);
?>
答案 1 :(得分:2)
在JavaScript中使用异步HTTP请求来加载PHP脚本的输出。
例如,使用Prototype框架的Ajax.Request,假设您有一个带有id="notice"
的HTML元素,并且您希望根据脚本的输出更新它(一个简单的“true”或“假”字符串)。
new Ajax.Request('/validate.php', {
method: 'get',
onSuccess: function(transport) {
var notice = $('notice');
if (transport.responseText == 'true')
notice.update('Validation successful');
else
notice.update('Validation failed');
}
});
答案 2 :(得分:2)
function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
function CallSomePHP(username, password)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="myPhp.php";
url = url+"?username="+username+"&password="+password;
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
function stateChanged()
{
if (xmlhttp.readyState==4)
{
alert(xmlhttp.responseText); // this will alert "true";
}
}
myphp.php
<?
// Get the values of username and password
$username = $_GET['username'];
$password = $_GET['password'];
echo"true";
?>
答案 3 :(得分:1)
你应该尝试JQuery。我以下列方式从JS发送和接收PHP,假设这是表单。
<div id="form">
<input type="text" id="email" /><br />
<button id="submit">Submit</button>
</div>
<div id="response">
</div> <!-- load jquery -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" > </script>
// put this in script type="text/javascript" tags
$(document).ready(function(){
var emailValue;
$("#submit").click(function(){
// when the user clicks the submit button
// get the value of email and put it in the variable we made above
emailValue=$("#email").val();
/* am going to send a post variable called "email"
* with the value of "emailValue" to a script called receiver.php
*/
$.post('receiver.php',{email:emailValue},function(e){
// "e" is variable that contains the echoed string
// check if it's true or false
if(e=="true")
alert ("valid email");
else
alert("invalid email");
});
});
});
$email=$_POST['email'];
// checkMail is a fictional function that returns a bool
$valid=checkMail($email);
if($valid)
{
// email is valid
echo "true";
}else{
// email is invalid
echo "false";
}
注意:如果您不向PHP脚本发送数据,则应使用$.get
而不是$.post
,这样会快一些。
您还可以使用JavaScript变量e
并将其内容加载到表单中的response
分区
$("#response").html(e);
这将完成同样的事情,就像你使用JQuery的load()
函数一样,如下面的Coder提到的那样。
答案 4 :(得分:0)
最后,请执行以下操作:
print json_encode($filesArray);
它会发回一个json对象,Javascript可以轻松读取。
答案 5 :(得分:0)
如果您只是使用JavaScript,可能最简单的解决方案是将其作为<script>
标记包含在内。
例如:
<script src="Getfilename.php" type="text/javascript"></script>
然后在PHP中,而不是:
return $filesArray;
让它写一些JavaScript。
echo "var result = ".json_encode($filesArray).";";
您的$ filesArray值现在将作为变量result
放在您的javascript中。
<script>alert(result)</script>
答案 6 :(得分:0)
PHP应存储在远程服务器上,并使用脚本化HTTP请求进行调用。阅读AJAX,了解其工作原理以及如何执行此类任务的详细信息。
你不能只在浏览器中这样做,因为JavaScript没有PHP解释器,大多数浏览器都没有,因此不能只运行PHP文件来获得输出。
答案 7 :(得分:0)
如果你没有使用像jquery或prototype这样的javascript框架,那么你必须自己创建一个XMLHttpRequest对象,javascript框架通常会将其包装起来。 如下所示:
function GetHttpObject()
{
if (typeof XMLHttpRequest != 'undefined')
return new XMLHttpRequest();
try
{
return new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
return false;
}
答案 8 :(得分:0)
你可以通过ajax轻松搞定。即使您可以使用Jquery将值发布到php并在单行代码中获取ajax响应,如下所示。
p['value']=2;//some input value to be posted
$('#data').load('http://example.com/validator.php',p,function(str){} );
HTML:
<div id="data">
</div>
在这段代码中,您将p ['value']作为2发送到validator.php并获取响应并将该值加载到同一页面中的数据div。
在我们的PHP代码中 //将已发布的值转换为某个$ value 和
if($value==2)
echo 'true I got 2'
else
echo 'I didnot got 2 You posted wrong value';
这将打印为true我在div #data中得到2。 这可能不是您的确切要求,但非常有用。