AJAX - 未定义 PHP 变量
AJAX - Undefined PHP variable
我有以下问题,以下脚本发送一个关键字 PHP 在另一个域中托管的文件(我已经添加了 CROS headers),这个 PHP returns 我一些 "echos of different variables"
(标题、缩略图、url 等)它有效但随机 returns 我 "Undefined variables"
.
第一件事是在 PHP 中向我的变量添加一个 if (isset ())
并且错误不再出现但是我的搜索返回的结果要小得多(在添加它之前平均为 10 到20 个结果,现在我得到 5 个结果)。
这可能是我的脚本有问题吗?
我的form.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.
时出现问题
我收到以下错误:
Notice: Undefined variable: title in C:\xampp\htdocs\webs\ladoserver\script.php on line 13
Notice: Undefined variable: title in C:\xampp\htdocs\webs\ladoserver\script.php on line 13
Notice: Undefined variable: url in C:\xampp\htdocs\webs\ladoserver\script.php on line 14
未定义的变量来自您的 PHP 文件 (/ladoserver/script.php)。
什么生成返回的变量?最常见的 "cause" 是仅在可能不会执行的代码块中设置变量(例如,在 if 块中,或在迭代 0 次的循环中)
您可以通过在脚本顶部定义每个变量来避免错误(假设您可以使用空白值)。
<?php
$title = "";
$thumbnail = "";
$url = "";
$id = "";
?>
编辑:@snip1377 提醒我,您也可以在输出前的脚本末尾使用 isset
。
这是您的 $thumbnail 变量的一些示例代码,您可以将其应用于所有要返回的变量
<?php
if (isset($thumbnail))
{
echo $thumbnail;
}
else
{
echo "";
}
?>
或者,您可以使用 ternary operator:
<?php
echo (isset($thumbnail)) ? $thumbnail : '';
?>
再次编辑:只是为了说明我的意思,即变量可能无法在脚本中定义,这是一个可能导致未定义错误的示例:
<?php
if ($_POST['value'] == 1)
{
// This will never be reached unless $_POST['value'] is exactly 1
$return_val = 1;
}
echo $return_val;
?>
如果 $_POST['value'] 不是 1,这将给出未定义的警告。
类似地,如果 $_POST['value'] 在以下代码中为 0,它也会有未定义的警告:
<?php
for ($i=0; $i<$_POST['value']; $i++)
{
// This will never be reached if $_POST['value'] is less than 1
$return_val = $i;
}
echo $return_val;
?>
在上面的例子中,你可以简单地在脚本的顶部定义$return_val
,你就不会再报错了。
您将此数据作为 post method.you 发送,应该用 $_post['name']
回显它们,但您只是回显 $name
在script.php
中使用这个:
<?php
echo $_POST['title'];
echo $_POST['thumbnail'];
echo $_POST['url'];
?>
我有以下问题,以下脚本发送一个关键字 PHP 在另一个域中托管的文件(我已经添加了 CROS headers),这个 PHP returns 我一些 "echos of different variables"
(标题、缩略图、url 等)它有效但随机 returns 我 "Undefined variables"
.
第一件事是在 PHP 中向我的变量添加一个 if (isset ())
并且错误不再出现但是我的搜索返回的结果要小得多(在添加它之前平均为 10 到20 个结果,现在我得到 5 个结果)。
这可能是我的脚本有问题吗?
我的form.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.
我收到以下错误:
Notice: Undefined variable: title in C:\xampp\htdocs\webs\ladoserver\script.php on line 13
Notice: Undefined variable: title in C:\xampp\htdocs\webs\ladoserver\script.php on line 13
Notice: Undefined variable: url in C:\xampp\htdocs\webs\ladoserver\script.php on line 14
未定义的变量来自您的 PHP 文件 (/ladoserver/script.php)。
什么生成返回的变量?最常见的 "cause" 是仅在可能不会执行的代码块中设置变量(例如,在 if 块中,或在迭代 0 次的循环中)
您可以通过在脚本顶部定义每个变量来避免错误(假设您可以使用空白值)。
<?php
$title = "";
$thumbnail = "";
$url = "";
$id = "";
?>
编辑:@snip1377 提醒我,您也可以在输出前的脚本末尾使用 isset
。
这是您的 $thumbnail 变量的一些示例代码,您可以将其应用于所有要返回的变量
<?php
if (isset($thumbnail))
{
echo $thumbnail;
}
else
{
echo "";
}
?>
或者,您可以使用 ternary operator:
<?php
echo (isset($thumbnail)) ? $thumbnail : '';
?>
再次编辑:只是为了说明我的意思,即变量可能无法在脚本中定义,这是一个可能导致未定义错误的示例:
<?php
if ($_POST['value'] == 1)
{
// This will never be reached unless $_POST['value'] is exactly 1
$return_val = 1;
}
echo $return_val;
?>
如果 $_POST['value'] 不是 1,这将给出未定义的警告。
类似地,如果 $_POST['value'] 在以下代码中为 0,它也会有未定义的警告:
<?php
for ($i=0; $i<$_POST['value']; $i++)
{
// This will never be reached if $_POST['value'] is less than 1
$return_val = $i;
}
echo $return_val;
?>
在上面的例子中,你可以简单地在脚本的顶部定义$return_val
,你就不会再报错了。
您将此数据作为 post method.you 发送,应该用 $_post['name']
回显它们,但您只是回显 $name
在script.php
中使用这个:
<?php
echo $_POST['title'];
echo $_POST['thumbnail'];
echo $_POST['url'];
?>