AJAX-未定义PHP变量

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (122)

下面的脚本发送一个托管在另一个域中的PHP文件的关键字(我已经添加了CRO头),这个PHP会返回一些"echos of different variables"(标题、缩略图、网址等)它可以工作,但随机返回我"Undefined variables"

第一件事是添加一个if (isset ())对于PHP中的变量,错误不再出现,但是我的搜索返回的结果要小得多(在添加平均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时,问题就出现了。

我得到了以下错误:

注意:未定义变量:行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文件(/ladoserver/script.php)。

是什么生成要返回的变量?造成这种情况的最常见的“原因”,是只在可能无法执行的代码块中设置变量(例如在if块中,或者在迭代0次的循环中)。

可以通过在脚本顶部定义每个变量来避免错误(假设可以使用空白值)。

<?php
$title = "";
$thumbnail = "";
$url = "";
$id = "";
?>

编辑@Snip1377提醒我,也可以使用isset在输出之前的脚本的末尾。

以下是$缩略图变量的一些示例代码,可以将其应用于所有要返回的变量。

<?php
if (isset($thumbnail))
{
    echo $thumbnail;
}
else
{
    echo "";
}
?>

或者,可以使用三元算子:

<?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;
?>

这将给出未定义的警告,如果$_岗“价值”不是1。

同样,如果$_岗“价值”如果在以下代码中为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: 云+的活动由你来决定!?

青年码农

晨讯科技 · web前端开发高级工程师 (已认证)

公众号【青年码农】:有趣、有料,有深度、有广度、有热度。
活动形式 对于云的实际操作,之前关于云的基本都是文章、视频等形式来对技术的阐述,对于使用云的开发者来说,可能意义不大,而希望的是实际操作,毕竟实际操作遇到的问题才是真正要解决的问题 活动大纲(例) 主题:使用云开发搭建一个小程序或者提供一个后台接口 腾讯云提供了n多个服务,多数服...... 展开详请

实时音视频如何实现画中画的效果?

Cstar

腾讯 · 产品经理 (已认证)

推荐
开启大小画面双路编码模式的接口如下: iOS&Mac:enableEncSmallVideoStream Android:enableEncSmallVideoStream Windows(C++):enableSmallVideoStream Windows(C#):enab...... 展开详请

有没有可以提升运维效率的服务器管理软件,主要功能有哪些,求推荐?

The parameter `SecretKey` is not recognized?

zqfan

腾讯 · 高级工程师 (已认证)

推荐已采纳

报错的意思是参数SecretKey无法识别,接口实际未定义这个字段。

SecretKey是你的密钥,相当于你的账户密码,调用API时是不需要传递的。

桌面浏览器版和安卓版能进入一个实时音视频房间么?

人生的旅途辣鸡前端
推荐已采纳
https://cloud.tencent.com/document/product/647/43019 image.png ... 展开详请

智聆口语评测返回结果里面的评分为0?

1,音频文件要符合16khz采样率16bit位深单声道,如果是mp3文件码率要高于48kbps,否则评分可能会出现偏低或者0 2,VoiceType是否和传入的音频文件一致,文本和音频是否一致. 3,看下sessionId是否在每次评测的时候都是一样的结果导致的   4,在初次...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券