JavaScript — код вставлен на вход

У меня есть форма в PHP, которая создает проблемы, поэтому мне нужна помощь.

Когда пользователь пишет почтовый индекс (Código postal) и нажимает «Buscar», сценарий просматривает БД и заполняет остальную часть формы информацией. Я уже управлял различными сценариями:

  1. Если почтовый индекс не существует, вы получите предупреждение.
  2. Если почтовый индекс правильный, он заполняет форму почтовым индексом, городом и штатом.

И моя проблема связана с третьим. Если почтовый индекс существует, но существует несколько городов, использующих этот почтовый индекс (это может произойти с испанскими почтовыми индексами …), я хочу открыть всплывающее окно, новое окно, динамическое всплывающее окно … с выбором, чтобы пользователь мог выберите правильный город …

Мне удалось определить, когда вы вводите почтовый индекс, который используется более чем в одном городе, но проблема в том, что в момент запуска скрипта для всплывающего окна вместо его работы просто показывают код на «Población» и « Провинция «входы …

Вот код, который я использую:

index.php

<input type="text" maxlength="5" class="form-control" id="postal_code" name="postal_code" placeholder="Código postal" pattern="[0-9]{5}">
<button class="btn btn-info btn-flat" type="button" onclick="updateCityState();">Buscar</button>
<input type="text" id="city" class="form-control" placeholder="Población">
<input type="text" id="state" class="form-control" placeholder="Provincia">
........
<script src="popup.js"></script>
<script>var ajax = getHTTPObject();

function getHTTPObject()
{
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else if (window.ActiveXObject) {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} else {
//alert("Your browser does not support XMLHTTP!");
}
return xmlhttp;
}

function updateCityState()
{
if (ajax)
{
var zipValue = document.getElementById("postal_code").value;
if(zipValue)
{
var url = "get_cities.php";
var param = "?postal_code=" + escape(zipValue);

ajax.open("GET", url + param, true);
ajax.onreadystatechange = handleAjax;
ajax.send(null);
}
}
}
function handleAjax()
{
if (ajax.readyState == 4)
{
if( ajax.responseText.length ) {
citystatearr = ajax.responseText.split(",");
city.value = citystatearr[0];
state.value = citystatearr[1];
}else{
city.value = "No existe";
state.value = "No existe";
}
}
}
</script>

get_cities.php

<?php
include_once('../../../connect.html');
//perform lookup
$title = ($_GET['postal_code']);
$statement = $connection->prepare ("SELECT city, state FROM cities, states WHERE cities.state_id = states.state_id AND cities.postal_code = ?");
$statement->execute(array($title));
$statement->setFetchMode(PDO::FETCH_ASSOC);

$items = array();
while ($r = $statement->fetch()) {
//$arrayName = array($r = $statement->fetch());
$items[] = $r;
}

if (count($items) == '1'){

$newArray = $items[0];
echo $newArray['city'].",".$newArray['state'];
}elseif (count($items) == '0'){
echo "Doesn't exist".","."Doesn't exist";
}else{
<script type="text/javascript">
centerPopup();
loadPopup();
</script>

<div id="popupContact">
<a id="popupContactClose">x</a>
<h1>Title of our cool popup, yay!</h1>
<p id="contactArea">
Here we have a simple but interesting sample of our new stuning and smooth popup. As you can see jQuery and CSS does it easy...
<br/><br/>
We can use it for popup-forms and more... just experiment!
<br/><br/>
Press ESCAPE, Click on X (right-top) or Click Out from the popup to close the popup!
<br/><br/>
<a href="http://www.yensdesign.com"><img src="logo.jpg" alt="Go to yensdesign.com"/></a>
</p>
</div>
<div id="backgroundPopup"></div>
}

?>

popup.js

   /***************************/
//@Author: Adrian "yEnS" Mato Gondelle
//@website: www.yensdesign.com
//@email: [email protected]
//@license: Feel free to use it, but keep this credits please!
/***************************/

//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;
var popupStatus = 0;

//loading popup with jQuery magic!
function loadPopup(){
//loads popup only if it is disabled
if(popupStatus==0){
$("#backgroundPopup").css({
"opacity": "0.7"});
$("#backgroundPopup").fadeIn("slow");
$("#popupContact").fadeIn("slow");
popupStatus = 1;
}
}

//disabling popup with jQuery magic!
function disablePopup(){
//disables popup only if it is enabled
if(popupStatus==1){
$("#backgroundPopup").fadeOut("slow");
$("#popupContact").fadeOut("slow");
popupStatus = 0;
}
}

//centering popup
function centerPopup(){
//request data for centering
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
var popupHeight = $("#popupContact").height();
var popupWidth = $("#popupContact").width();
//centering
$("#popupContact").css({
"position": "absolute",
"top": windowHeight/2-popupHeight/2,
"left": windowWidth/2-popupWidth/2
});
//only need force for IE6

$("#backgroundPopup").css({
"height": windowHeight
});

}//CONTROLLING EVENTS IN jQuery
$(document).ready(function(){

//LOADING POPUP
//Click the button event!//CLOSING POPUP
//Click the x event!
$("#popupContactClose").click(function(){
disablePopup();
});
//Click out event!
$("#backgroundPopup").click(function(){
disablePopup();
});
//Press Escape event!
$(document).keypress(function(e){
if(e.keyCode==27 && popupStatus==1){
disablePopup();
}
});

});

Поэтому, когда скрипт обнаруживает, что пользователь ищет почтовый код, принадлежащий нескольким городам, и вместо открытия всплывающего окна нажимает «Buscar», он заполняет форму содержимым popup.js. Я действительно не знаю, почему это происходит, поэтому любая помощь будет оценена !!

2

Решение

Поэтому, если я правильно прочитал ваш вопрос и комментарии, это не совсем тот код, над которым вы работаете, но, похоже, я понял вашу точку зрения. Информация для других, он использует echo в предложении else в скрипте get_cities.php и теперь для решения.

Ваш обработчик ajax нуждается в исключении.

function handleAjax()
{
if (ajax.readyState == 4)
{
if( ajax.responseText.length && ajax.responseText.indexOf("script") < 0 ) { //<-- here
citystatearr = ajax.responseText.split(",");
city.value = citystatearr[0];
state.value = citystatearr[1];
}

Затем добавьте новое условие

 else if ( ajax.responseText.lengt && ajax.responseText.indexOf("script") != -1 ){
// as I see you have also jquery I will use it here
$('body').append(ajax.responseText);
}

а затем остальная часть вашего кода

 else{
city.value = "No existe";
state.value = "No existe";
}
}
}

Но весь этот код не решит всех ваших проблем, с которыми вы столкнетесь. Я бы предложил создать модальное окно внутри html (php), а затем просто заполнить его информацией из ajax.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]