AJAX и PHP - не получают .responsetext - PullRequest
0 голосов
/ 18 июля 2011

У меня есть форма (добавлю проверку формы позже), которая позволяет пользователю «Добавить свойство» для сайта недвижимости.Вот мой html / js:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Add New Property</title>

<script type="text/javascript">

function addProperty() {
    var name = document.getElementById('name').value;
    var address = document.getElementById('address').value;
    var lat = document.getElementById('lat').value;
    var lng = document.getElementById('lng').value;
    var type = document.getElementById('type').value;
    var rent = document.getElementById('rent').value;
    var bedrooms = document.getElementById('bedrooms').value;
    var owner_id = document.getElementById('owner_id').value;

    if (window.XMLHttpRequest) {
        //code for IE7+, Firefox, Chrome and Opera
        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('message').innerHTML = xmlhttp.responseText;
        }
    }

    var url = "add_property.php?name="+name+"&address="+address+"&lat="+lat+"&lng="+lng;
    url += "&type="+type+"&bedrooms="+bedrooms+"&owner_id="+owner_id;

    xmlhttp.open("GET", url, true);

    xmlhttp.send();

}

</script>


</head>

<body>
<form>

Property Name:
<input type="text" name="name" id="name" />
<br />
Address:
<input type="text" name="address" id="address" />
Lat: <input type="text" name="lat" id="lat" />
Lng: <input type="text" name="lng" id="lng" />
<br />
Type of property:
    <select name="type" id="type">
        <option value="house">House</option>
        <option value="apartment">Apartment</option>
    </select>
<br />
Number of Bedrooms:
<input type="text" name="bedrooms" id="bedrooms" />
<br />
Owner Id:
<input type="text" name="owner_id" id="owner_id" />
<br /><br />
<input type="button" value="Add Property" onclick="addProperty()" />

</form>
<div id="message"></div>
</body>
</html>

Вот мой php:

<?php require_once("includes/initialize.php"); ?>

<?php

$name = $_GET['name'];
$address = $_GET['address'];
$lat = $_GET['lat'];
$lng = $_GET['lng'];
$type = $_GET['type'];
$rent = $_GET['rent'];
$bedrooms = $_GET['bedrooms'];
$owner_id = $_GET['owner_id'];

//this text won't come back...
$message = $name.$address.$lat.$lng.$type.$rent.$bedrooms.$owner_id;


echo $message;

?>

Я знаю, что это, вероятно, небольшая синтаксическая ошибка, о которой я обычно не спрашиваю в SO, ноЯ потратил на это 2 с лишним часа и очень расстроен.Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

ОБНОВЛЕНИЕ: var rent = document.getElementById('rent').value; выдал ошибку, потому что не было элемента с идентификатором "rent".

СТАРЫЙ: вы не отменяете действие по умолчанию для кнопки отправки. Верните false из addProperty метода, и тогда вы должны увидеть ответ.

0 голосов
/ 18 июля 2011
Error: document.getElementById("rent") is null
Line: 39

Нет элемента с идентификатором rent.Также вам следует encodeURI или encodeURIComponent ваши параметры:

encodeURIComponent(document.getElementById('name').value)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...