【发布时间】:2017-11-18 09:13:38
【问题描述】:
我有以下问题,以下脚本向托管在另一个域中的 PHP 文件发送关键字(我已经添加了 CROS 标头),此 PHP 向我返回了一些 "echos of different variables"(标题、缩略图、url 等)并且它有效但随机返回我"Undefined variables"。
第一件事是在我的 PHP 变量中添加一个if (isset ()),错误不再出现,但我的搜索返回的结果要小得多(在添加之前平均有 10 到 20 个结果,现在我得到 5 个结果)。
这可能是我的脚本有问题吗?
我的表单.php
<form method="POST" action="" id="form-busqueda">
<input type="text" name="keyword">
<button id="search" name="search">Search</search>
<div id="results"></div>
<script>
jQuery(function($){
var pluginUrl = '<?php echo plugin_dir_url( __FILE__ ); ?>' ;
$('[id^="form-busqueda"]').on('submit', function(e) {
e.preventDefault();
$.ajax({
type : 'POST',
url : 'http://localhost/ladoserver/script.php',
data : $(this).serialize(),
beforeSend: function(){
$('#results').html('<img src="'+pluginUrl+'../../assets/img/loading.gif" />');
}
}).done(function(data) {
$('#results').html(data);
});
});
});
</script>
</form>
我的script.php(dlPage是一个创建cURL连接的函数):
<?php
if (isset($_POST['keyword'])) {
$search = $_POST['keyword'];
$html = dlPage("http://example.com/" . $search);
//where I search and get with simple_html_dom example:
$video = $videos->find('div.example2>a', 0);
$title = $video->innertext;
$url = $video->attr['href'];
$id = $video->attr['id'];
$thumbnail = $video->find('div.thumb', 0)->innertext;
echo $title;
echo $url;
echo $id;
echo $thumbnail[0];
}
?>
我已经更新了我的代码,我没有放所有代码,因为我认为它不相关,我的script.php 可以在纯 PHP 中正常工作。当我使用 AJAX 时出现问题。
我收到以下错误:
注意:未定义变量:第 13 行 C:\xampp\htdocs\webs\ladoserver\script.php 中的标题
注意:未定义变量:第 13 行 C:\xampp\htdocs\webs\ladoserver\script.php 中的标题
注意:未定义变量:第 14 行 C:\xampp\htdocs\webs\ladoserver\script.php 中的 url
【问题讨论】:
-
您需要向我们展示您如何在 PHP 文件中定义这些变量,因为这似乎是问题所在。我们需要查看所有相关代码。
-
...如果在您使用
isset()时结果变小,这仅意味着您没有设置所有变量。 -
好的,对不起,我已经用相关信息更新了我的问题。我正在使用 simple_html_dom
-
@JorgeAguilar 抱歉,我错过了定义 $video 的部分。
isset和empty的行为类似,除了 isset 检查是否声明了变量,而 empty 检查是否有分配给变量的值。您知道为什么使用isset时结果数较少吗?另外,出于好奇,您是否尝试过将 $url/$id/$thumbnail 设置为空白值,就像 Magnus 上面建议的那样,就像我在下面的回答中建议的那样?
标签: javascript php jquery ajax undefined-index