J'essaie d'obtenir les données en utilisant AJAX. Mon code est ci-dessous. Fondamentalement ce que j'essaye de faire est: Le premier élément contient HTML
et le deuxième élément contient un autre tableau JSON
avec les données à l'intérieur. Le 2ème élément de travail trouve, mais le 1er élément n'a donné aucun résultat. Si j'écris le code comme ceciAucun retour de HTML en utilisant AJAX
$html = $cont[0][0];
Il renvoie les résultats quand j'écrire du code comme celui-ci
$html = '<div>This is Html</div>';
Maintenant, je ne savais vraiment pas pourquoi cela arrive. Si je echo
le premier code
style il montre les données, mais ne l'a pas passé.
script Code
<script>
function get_data_from_rul() { //alert('ting');
var post_url = jQuery('#prod_url').val();
//alert('hmm');
jQuery.ajax({
url: 'ajax.php',
type: 'post',
data: {'post_url': post_url},
dataType: "json",
success: function(serverResponse) {
//location.reload();
//console.log(data);
jQuery('#prod_detail').val(serverResponse.html);
var data = JSON.parse(serverResponse.data);
jQuery('#meta_description').val(data.description);
jQuery('#meta_keyword').val(data.keywords);
jQuery('#prod_title').val(data.page_title);
}
});
}
</script>
Code HTML:
<input type="text" id="prod_url" name="prod_url" class="large" onkeyup="get_data_from_rul();" />
<br />
<textarea id="meta_description" rows="8" cols="90"></textarea><br />
<textarea id="meta_keyword" rows="8" cols="90"></textarea><br />
<textarea id="prod_title" rows="8" cols="90"></textarea><br />
<textarea id="prod_detail" rows="8" cols="90"></textarea>
Code ajax.php:
<?php
$url = $_REQUEST['post_url'];
function get_web_page($url)
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
$result = get_web_page($url);
preg_match('/<title>(.+)<\/title>/',$result['content'],$matches[]);
preg_match('/<div id="specs-list">([^`]*?)<\/div>/',$result['content'],$cont[]);
$tags = get_meta_tags($url);
$keywords = $tags['keywords'];
$description = $tags['description'];
$page_title = $matches[0][1];
$html = $cont[0][0];
$data = json_encode(array('keywords'=>$keywords,'description'=>$description,'page_title'=>$page_title));
$response = array('html'=>$html, 'data'=>$data);
echo json_encode($response);
Pourquoi ajouter des parenthèses au dernier argument dans preg_match, supprimer '[]' de la fin. – adeneo
Je l'ai fait mais ça ne marche pas. et je ne pense pas que cela ait un effet. Mais comment je l'essaie mais toujours pas de résultats. Merci –