Javascript PHP同步问题

时间:2010-11-24 12:37:14

标签: php javascript mysql ajax

我想用存储在MySQL中的参数调用javascript函数。所有这些都发生在onClick事件上。

以下是javascript代码:

    function getFile() {
  if (window.XMLHttpRequest) {              
    AJAX=new XMLHttpRequest();              
  } else {                                  
    AJAX=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (AJAX) {
     AJAX.open("POST", "gmap.php", false);                             
     AJAX.send("searchField=" + searchField.value);
     return load(AJAX.responseText);   

  } else {
     return false;
  }                                             
}

因此,gmap.php回显了javascript加载函数的参数。但是它没有加载参数,因为在执行gmap.php中的MySQL查询之前调用了该函数。我尝试过同步和异步AJAX。 如果我尝试从PHP调用javascript函数,它不会被执行,因为它是在onClick事件上调用的,而这是在div中。 请帮助我,我现在这样做了一个星期。我已经尝试了一切。

这是带有MySQL查询的php代码:

<?php
header( 'Content-Type: text/html; charset=UTF-8' );
mb_internal_encoding( 'UTF-8' );
$a = $_POST['searchField'];
$dbhost = "localhost";
$dbuser = "*******";
$dbpass = "*******";
$dbname = "citydb";



    //connect sql
mysql_connect($dbhost, $dbuser, $dbpass);

    //select db
mysql_select_db($dbname) or die(mysql_error());
    //retrieve data
//$city=$_GET['city'];
    //escape user input to help prevent SQL injection
//$city=mysql_real_escape_string($city);
    //query
mysql_query('SET CHARACTER SET utf8');
$result=mysql_query("SELECT citystart, cityend FROM cityids WHERE city='$a' ");
if(!result) {

    die("Database query failed: " . myql_error());
    }

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


    $lat=$row['citystart'];
    $lng=$row['cityend'];


}


    echo $lat;
    echo ", ";
    echo $lng;



?>

3 个答案:

答案 0 :(得分:0)

将php url与变量一起传递给search。

if (AJAX) {
     var url = "gmap.php?searchField="+ searchField.value;
     AJAX.open("POST", "url", false);                             
     AJAX.send(true);
     return load(AJAX.responseText);   
}

答案 1 :(得分:0)

我认为searchField.value不包含任何内容。

替换

searchField.value

有了这个

document.getElementById('searchField').value

将searchField指定为搜索框的id。

答案 2 :(得分:0)

在AJAX.open之后和AJAX.send之前添加此代码。

AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
AJAX.setRequestHeader("Content-length", searchField.value.length);
AJAX.setRequestHeader("Connection", "close");

我已经成功测试了这个

<html>
<head>
<script>

function load(response) {
  alert(response);
}

function getFile() {
  if (window.XMLHttpRequest) AJAX=new XMLHttpRequest();              
  else AJAX=new ActiveXObject("Microsoft.XMLHTTP");

  if (AJAX) {
    var params = "foo=" + searchField.value;
    AJAX.open("POST", "http://localhost/test.php", true);                             
    AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    AJAX.setRequestHeader("Content-length", params.length);
    AJAX.setRequestHeader("Connection", "close");
    AJAX.onreadystatechange = function() {
      var ok;
      try { ok=AJAX.readyState; } catch(e) { }
      if(ok==4) load(AJAX.responseText);
    }
    AJAX.send(params);
  }                                             
}
</script>
</head>
<body>
  <input type="text" id="searchField"/>
  <input type="button" onclick="getFile()"/>
<script>
  searchField = document.getElementById("searchField");
</script>
</body>
</html>