0

我需要按钮来开始 mysql 查询,然后将结果插入到 javacript 代码块中,该代码块将显示在按钮所在的同一页面上。mysql 查询来自下拉菜单的值。

Homepage.php 包含

two drop down menus

div id='one' to hold the results javscript code block

a button to stimulate the mysql query to be displayed in div id ='one' through Javascript

flow of the process is as such
1. user chooses an option from each drop down
2. when ready, the user clicks a button
3. the onclick runs a mysql query with selections from the drop down menu.
4. send the results as array from the mysql query into the javascript code block
5. display the results in div id ='one'

所有这些都需要发生在同一页面上!

我遇到的问题是,一旦加载页面,javascipt 就是静态的。我无法将 mysql 结果推送到我需要它出现的页面上的 javascript 中。将所有内容都放在同一页面上会造成麻烦。

我不是在寻找为我制定的确切代码,只是应该用于完成此任务的正确流程流程。先感谢您!

我试过了

使用两个下拉菜单调用使用 httprequest 的相同 javascript 函数。该函数被定向到执行 mysql 处理的 php 页面。然后通过 httprequest 将结果返回到主页。

我尝试将整个 Javascript 代码块保存为 php 变量,其中已经包含 mysql 结果,然后通过 HTTPRequest 将变量返回到主页,我认为我可以通过这种方式创建动态 javascript 代码。没有任何工作

4

4 回答 4

4

您需要使用一种称为 AJAX 的技术。我推荐jQuery的 .ajax()方法。尝试做原始 XHR 充其量是痛苦的。

以下是您想要构建代码的方式:

  1. 加载页面。
  2. 用户选择一个选项。
  3. onChange 侦听器触发 AJAX 请求
  4. 服务器接收并处理请求
  5. 服务器为相关选择发回一个 JSON 数组选项
  6. 客户端 AJAX 发送方得到响应
  7. 客户端更新选择以获取 JSON 数组中的值。

基本上,HTTP 是无状态的,所以一旦页面被加载,它就完成了。您必须连续向服务器请求动态数据。

于 2012-09-06T17:02:47.767 回答
0

这是我如何使用 onchange 方法来刺激 MYSQL 查询并让 Highchart 显示结果。主要问题是返回的 JSON 数组是一个需要转换为 INT 的字符串。然后在数据中使用 resultArray 变量:highChart 的部分。

$(function(){
  $("#awayTeam").change(function(){ 
    $.ajax({
    type: "POST",    
    data: "away=" + $("#awayRunner").val(),
    dataType: "json",
    url: "/getCharts.php",
    success: function(response){
          var arrayLength = response.length;
          var resultArray = [];
          var i = 0;
          while(i<arrayLength){
              resultArray[i] = parseInt(response[i]);
              i++;
          }            

在 PHP 代码中,数组必须像这样返回为 JSON

echo json_encode($awayRunner);

于 2012-12-13T17:07:24.613 回答
0

Use AJAX,

example

$.ajax({
    type: "POST",
    url: "yourpage.php",
    data: "{}",
    success: function(result) {
        if(result == "true") {
            // do stuff you need like populate your div
            $("#one").html(result);               
        } else {
            alert("error");
        }
    }
});
于 2012-09-06T17:05:27.217 回答
0

为此你需要学习ajax。这是用来在不重新加载页面的情况下发出请求的。这样你就可以对mysql进行后台调用

你的代码将是这样的

$("#submitbutton").live("click",function(){

$.ajax({url:"yourfile"},data:{$(this).data}).done(function(data){
//this data will in json form so decode this and use this in div 2
var x =$.parseJSON(data);
$("#div2").html(x.val());
})
})

并且"yourfile"是连接到服务器并发出数据库请求的主文件

于 2012-09-06T17:26:51.410 回答