Javascript PHP проблема синхронизации - PullRequest
0 голосов
/ 24 ноября 2010

Я хочу вызвать функцию javascript с параметрами, которые хранятся в MySQL.Все это происходит в событии 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.Но он не загружает параметр, потому что функция вызывается до выполнения запроса MySQL в gmap.php.Я пробовал синхронизировать и асинхронно AJAX.Если я попытаюсь вызвать функцию javascript из PHP, она не будет выполнена, потому что она вызывается для события onClick, и это внутри div.Пожалуйста, помогите мне, я делаю это больше недели.Я перепробовал все.

Вот код php с запросом MySQL:

<?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 голосов
/ 24 ноября 2010

Я думаю, что searchField.value ничего не содержит.

Заменить

searchField.value

С этим

document.getElementById('searchField').value

назначить поле поиска в качестве идентификатора для поля поиска.

0 голосов
/ 24 ноября 2010

добавить этот код после 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>
0 голосов
/ 24 ноября 2010

передайте php url вместе с переменной для поиска.

if (AJAX) {
     var url = "gmap.php?searchField="+ searchField.value;
     AJAX.open("POST", "url", false);                             
     AJAX.send(true);
     return load(AJAX.responseText);   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...