संकेत के साथ हल समस्या ग्रेग पेटीट ने दिया!
मुझे एडैक्स अनुरोधों को रोकने में वर्डप्रेस की संभावना से अवगत नहीं था, मैंने सोचा था कि अनुरोध के साथ किसी भी मौजूदा यूआरएल को अनुरोध को रीडायरेक्ट करने के लिए कुछ करना था।
यह जानने के बाद, मैं कैसे Wordpress के कार्यों का उपयोग कर ajax अनुरोध करने के लिए शोध किया और यहाँ समाधान है: मेरे विषय के functions.php में
:
// Hooks wp_ajax that points to the function that builds the XML Stores
add_action('wp_ajax_procura_lojas','procuraLojas'); // Unlogged User
add_action('wp_ajax_nopriv_procura_lojas','procuraLojas'); // Logged User
// Function that Builds Stores XML
function procuraLojas() {
global $wpdb;
// Retrieve $_POST informattion coming from jQuery.post
$lat = $_POST["latitude"];
$lon = $_POST["longitude"];
$raio = $_POST["raio"];
// Query wp_lojas and Build XML
$consulta = $wpdb->get_results(sprintf("SELECT * , (3959 * acos(cos(radians('%s')) * cos(radians(latitude)) * cos(radians(longitude) - radians('%s')) + sin(radians('%s')) * sin(radians(latitude)))) AS distancia FROM wp_lojas HAVING distancia < '%s' ORDER BY distancia",
mysql_real_escape_string($lat),
mysql_real_escape_string($lon),
mysql_real_escape_string($lat),
mysql_real_escape_string($raio)));
$dom = new DOMDocument("1.0", "utf-8");
$no = $dom->createElement("lojas");
$parnode = $dom->appendChild($no);
header("Content-type: text/xml");
foreach ($consulta as $loja){
$no = $dom->createElement("loja");
$novono = $parnode->appendChild($no);
$novono->setAttribute('nome', $loja->nome);
$novono->setAttribute('lat', $loja->latitude);
$novono->setAttribute('lon', $loja->longitude);
$novono->setAttribute('telefone', $loja->telefone);
$novono->setAttribute('email', $loja->email);
$novono->setAttribute('endereco', $loja->endereco);
$novono->setAttribute('numero', $loja->numero);
$novono->setAttribute('complemento', $loja->complemento);
$novono->setAttribute('bairro', $loja->bairro);
$novono->setAttribute('cidade', $loja->cidade);
$novono->setAttribute('estado', $loja->estado);
$novono->setAttribute('cep', $loja->cep);
$novono->setAttribute('distancia', $loja->distancia);
}
// Print XML and Exit
echo $dom->saveXML();
exit;
}
Wordpress के शीर्षक मैं डाल में :
<script type='text/javascript'>
/* <![CDATA[ */
var MyAjax = { ajaxurl: "<?php bloginfo('url'); ?>/wp-admin/admin-ajax.php" }; // Build the Link to admin-ajax.php/Javascript Global Variable
/* ]]> */
</script>
उपयोगकर्ता प्रपत्र सबमिट करता है, मैं Wordpress के वर्ग है कि यह 'WP-व्यवस्थापक/व्यवस्थापक ajax.php' के लिए जिम्मेदार है के लिए एक पोस्ट ajax भेजें:
jQuery.post(
MyAjax.ajaxurl, // Link to the file 'wp-admin/admin-ajax.php' responsible for handling ajax requisitions
{
action : 'procura_lojas', // Name used in the hook 'wp_ajax_procura_lojas'
latitude : center.lat(), // Latitude Parameter
longitude : center.lng(), // Longitude Parameter
raio : raio // Radius Parameter
},
function(data) { // Callback
// Retrieve all nodes called 'loja' and put it in the map
var markers = data.documentElement.getElementsByTagName("loja");
for (var i = 0; i < markers.length; i++) {
var dados = [];
dados["nome"] = markers[i].getAttribute('nome');
dados["estado"] = markers[i].getAttribute('estado');
dados["cidade"] = markers[i].getAttribute('cidade');
dados["bairro"] = markers[i].getAttribute('bairro');
dados["endereco"] = markers[i].getAttribute('endereco');
dados["numero"] = markers[i].getAttribute('numero');
dados["complemento"] = markers[i].getAttribute('complemento');
dados["cep"] = markers[i].getAttribute('cep');
dados["telefone"] = markers[i].getAttribute('telefone');
var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lon')));
var marker = createMarker(markers[i].getAttribute("name"), latlng, dados);
}
}
);
यही है! मेरे विचारों को स्पष्ट करने के लिए धन्यवाद ग्रेग पेटीट।
एक लिंक है कि मुझे मदद करता भी था 5 tips for using ajax in wordpress
मुझे आशा है कि इस सवाल का जवाब किसी एक दिन में मदद कर सकते हैं।
मैं समझता हूं! खैर, मुझे लगता है कि मैं उस पथ की खोज कर सकता हूं। धन्यवाद –