Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以使用AJAX将文本放入2个框而不是1个框中吗_Php_Html_Sql_Ajax - Fatal编程技术网

Php 我可以使用AJAX将文本放入2个框而不是1个框中吗

Php 我可以使用AJAX将文本放入2个框而不是1个框中吗,php,html,sql,ajax,Php,Html,Sql,Ajax,我制作了一个简单的html页面,它从我的一个数据库表中获取信息并将其粘贴到一个文本框中。它通过处理请求的AJAX函数连接到PHP来实现这一点 我想知道的是,这些数据是否可以放在两个文本框中,而不仅仅是一个文本框。我不知道该怎么做,因为在我的代码中,我必须声明一个文本框,我必须为每个文本框创建单独的函数才能使其工作,还是有更简单的解决方案 HTML页面: <html> <head> <script type="text/javascript"> function

我制作了一个简单的html页面,它从我的一个数据库表中获取信息并将其粘贴到一个文本框中。它通过处理请求的AJAX函数连接到PHP来实现这一点

我想知道的是,这些数据是否可以放在两个文本框中,而不仅仅是一个文本框。我不知道该怎么做,因为在我的代码中,我必须声明一个文本框,我必须为每个文本框创建单独的函数才能使其工作,还是有更简单的解决方案

HTML页面:

<html>
<head>
<script type="text/javascript">
function getDetails(str)
{
if (str=="")
  {
  document.getElementById("Text1").value=""; 
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("Text1").value=xmlhttp.responseText; // here is why it only      goes into "Text1"
    }
  }
xmlhttp.open("GET","getDetails.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<form>
<!--here a user enters an "RFID" and the details are returned into "Text1"-->
<input type="text" name="RFID1" value="" onKeyup="getDetails(this.value)" /> 
<input type="text" id="Text1" name="Text1" />
<input type="text" id="TextScore1" name="TextScore1"/>
</form>

<br/>

<form>
<!--here a user enters another "RFID" and the details are also returned into "Text1"
(though I would like it to go to Text2 and TextScore2)-->
<input type="text" name="RFID2" value="" onKeyup="getDetails(this.value)" />
<input type="text" id="Text2" name="Text2"/>
<input type="text" id="TextScore2" name="TextScore2"/>
</form>


</body>
</html>

函数getDetails(str)
{
如果(str==“”)
{
document.getElementById(“Text1”).value=“”;
返回;
} 
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“Text1”).value=xmlhttp.responseText;//下面是它只进入“Text1”的原因
}
}
open(“GET”、“getDetails.php?q=“+str,true”);
xmlhttp.send();
}

PHP页面:

<?php
$q=$_GET["q"];

$con = mssql_connect("SQL", "0001", "Password");
if (!$con)
  {
  die('Could not connect: ' . mssql_get_last_message());
  }

mssql_select_db("database1", $con);



$sql="SELECT * FROM Scrabble WHERE RFID = '".$q."'";

$result = mssql_query($sql);


while($row = mssql_fetch_array($result))
  {

  echo $row['Tile'];

  echo $row['TileScore'];
  }


mssql_close($con);
?>

*注意-我的服务器使用MsSQL

另一个问题,正如您在HTML文件中看到的,我有两个表单,我需要对这两个表单使用相同的函数。在这里,我想我可能必须为每个表单创建另一个要连接的PHP文件。但为了确定我要问的是,有没有可能把它保存在一个单独的文件中?如果有,你会怎么做

编辑似乎我把一些人弄糊涂了,我不希望文本同时放在两个文本框中,而是将结果分成两个文本框。这样“Text”将在文本框Text1中结束,TextScore将在文本框TextScore1中结束,为什么不这样做

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
  var response=xmlhttp.responseText;
  document.getElementById("Text1").value=response;
  document.getElementById("Text2").value=response;
}
对于第二个函数,可以使用相同的PHP文件。在进行ajax调用时,您可能需要向PHP页面传递querystring值,以确定“此调用来自何处”

差不多

getDetails.php?from="userinfo"

在PHP文件中,您可以检查查询字符串变量的值并执行适当的代码集。你可以在那里使用if/开关等

但我更愿意逻辑上分离功能,并将其保存在单独的文件中

Ex:我将在
userajaxhelper.php
中保留所有与用户相关的功能,并在另一个名为o
rderajaxhelper.php的文件中保留与订单相关的功能。这使我的代码有条理且干净

编辑:我只想把安迪·休谟的评论包括在我的答案中,因为这是一个重要的观点。你真的应该确保你不会成为暴力的受害者

为什么不是这个

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
  var response=xmlhttp.responseText;
  document.getElementById("Text1").value=response;
  document.getElementById("Text2").value=response;
}
对于第二个函数,可以使用相同的PHP文件。在进行ajax调用时,您可能需要向PHP页面传递querystring值,以确定“此调用来自何处”

差不多

getDetails.php?from="userinfo"

在PHP文件中,您可以检查查询字符串变量的值并执行适当的代码集。你可以在那里使用if/开关等

但我更愿意逻辑上分离功能,并将其保存在单独的文件中

Ex:我将在
userajaxhelper.php
中保留所有与用户相关的功能,并在另一个名为o
rderajaxhelper.php的文件中保留与订单相关的功能。这使我的代码有条理且干净

编辑:我只想把安迪·休谟的评论包括在我的答案中,因为这是一个重要的观点。你真的应该确保你不会成为暴力的受害者

你有一条代码线

document.getElementById("Text1").value=xmlhttp.responseText;
如果要将相同的文本添加到框2中

document.getElementById("yourSecondText").value=xmlhttp.responseText;
如果不一样,php应该以JSON格式给出答案,第1部分,。。。。分开

作为对ajax的响应,您应该为其文本框分配适当的部分

如果我没有回答这个问题,很抱歉。

你有一条代码线

document.getElementById("Text1").value=xmlhttp.responseText;
如果要将相同的文本添加到框2中

document.getElementById("yourSecondText").value=xmlhttp.responseText;
如果不一样,php应该以JSON格式给出答案,第1部分,。。。。分开

作为对ajax的响应,您应该为其文本框分配适当的部分


如果我没有回答这个问题,很抱歉。

您可以从PHP以JSON的形式返回结果,请参阅并发送正确的标题content-type-application/JSON

然后使用解析JavaScript中的JSON,就可以将一个键/参数分配给第一个字段,将另一个键/参数分配给另一个字段

...
$result = array();
while($row = mssql_fetch_array($result))
{
    $result[] = $row;
}
mssql_close($con);

header('Content-type: application/json');
echo json_encode($result);
和JS(注意:我没有测试JS代码,但它应该提供一个示例):


您可以从PHP以JSON的形式返回结果,请参阅并发送正确的标题content-type-application/JSON

然后使用解析JavaScript中的JSON,就可以将一个键/参数分配给第一个字段,将另一个键/参数分配给另一个字段

...
$result = array();
while($row = mssql_fetch_array($result))
{
    $result[] = $row;
}
mssql_close($con);

header('Content-type: application/json');
echo json_encode($result);
和JS(注意:我没有测试JS代码,但它应该提供一个示例):

简短回答:是的

更长的回答:当响应返回时,您可以“随心所欲”。你只需要弄清楚你到底想做什么,以及如何实现;前面的答案已经给出了很好的提示。不过,一般来说,您可能希望“缩小”到问题的核心——尽可能地获取通用页面,以便它仍能满足您的需求

你可能想做什么的例子(不是测试,只是快速设置的东西,但我认为你应该做到这一点)


服务器端

<?php
    // It doesn't matter which way you get the data, just... use it :-p
    echo('document.getElementById("txt1").value="Response 1";');
    echo('document.getElementById("txt2").value="Response 2";');
?>
简短回答:是

更长的回答:当响应返回时,您可以“随心所欲”。你只需要弄清楚你到底想做什么,以及如何实现;较早的