首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AJAX -未定义的PHP变量

AJAX -未定义的PHP变量
EN

Stack Overflow用户
提问于 2017-06-16 02:53:15
回答 2查看 1.7K关注 0票数 -2

我遇到了以下问题,下面的脚本发送一个关键字到另一个域中的PHP文件(我已经添加了CROS头文件),这个PHP返回一些"echos of different variables" (标题,缩略图,url等)。它可以工作,但会随机返回"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>

My 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时,问题就出现了。

我得到以下错误:

通知:未定义的变量: C:\xampp\htdocs\webs\ladoserver\script.php中第13行的标题

注意:未定义的变量:第13行的C:\xampp\htdocs\webs\ladoserver\script.php中的标题

注意:未定义的变量:第14行上的C:\xampp\htdocs\webs\ladoserver\script.php中的url

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-16 02:57:23

未定义的变量来自PHP文件(/ladoserver/script.php)。

是什么生成了返回的变量?最常见的“原因”是只在可能无法执行的代码块中设置变量(例如,在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,就不会再收到该错误。

票数 1
EN

Stack Overflow用户

发布于 2017-06-16 02:59:52

您将此数据作为post发送,method.you应使用$_post['name']回显这些数据,但您只需回显$name

script.php中使用此命令:

<?php 
    echo $_POST['title'];
    echo $_POST['thumbnail'];
    echo $_POST['url'];
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44574904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档