jaxa无法传值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jaxa无法传值?相关的知识,希望对你有一定的参考价值。

jq代码
$("#tub2").click(function() //当按钮button被点击时的处理函数 
$("#aw").hide();
var lb_url = $("#lb_url").val();
var lr_url = $("#lr_url").val();
var bq_url = $("#bq_url").val();
var a = "2";
var data = "lb_url="+lb_url+"&a="+a+"&lr_url="+lr_url+"&bq_url="+bq_url;
$.ajax( //调用jquery的ajax方法 
type: "POST", //设置ajax方法提交数据的形式 
url: "cj.php", //把数据提交到xz.php 
dataType:'html',
data:data, //输入框writer中的值作为提交的数据
success: function(data) //提交成功后的回调,msg变量是ok.php输出的内容。
$("#url_lb").empty(); 
$("#url_lb").append(data); //如果有必要,可以把msg变量的值显示到某个DIV元素中

);
);

php代码
preg_match_all("/<li><a href='\/gudianbook\/gudaiyishu\/bencaogangmu\/(\d+).html/",$str, $d);
foreach ($d[1] as $match)
$xc.= $bq_url.$match.".html\r\n";

echo $xc;

能正常传值给url_lb
preg_match_all("/<li><a href='\/gudianbook\/gudaiyishu\/bencaogangmu\/(\d+).html/",$str, $d);
改为
$gf='preg_match_all("/'.$lr_url.'/",$str, $d);';
eval($gf);
无法传值给url_lb
是什么原因,应该如何处理?

根据您提供的信息,我能够看出其中一个可能的问题是您在PHP代码中使用了eval()函数。使用eval()函数可以执行任意的PHP代码字符串,但是这也会带来一些安全风险,并且会使代码更难以调试和维护。因此,我建议您避免使用eval()函数。

另外,我注意到您将正则表达式中的硬编码字符串"/<li><a href='\\/gudianbook\\/gudaiyishu\\/bencaogangmu\\/(\\d+).html/" 替换为变量$lr_url。如果变量$lr_url的值包含任何特殊字符(例如正则表达式元字符),则可能会导致正则表达式匹配失败。

建议您使用正则表达式转义函数preg_quote()来转义$lr_url变量,以确保它可以被正确地解释为正则表达式。

例如,您可以将代码修改为以下形式:

参考技术A

    eval函数是一个非常强大但也非常危险的函数,它可以把字符串当作PHP代码来执行,并返回最后一条语句的值或者NULL。如果字符串中有语法错误或者不合法的代码,eval函数会返回false,并可能导致严重的安全问题。

    eval函数在执行字符串代码时,会继承当前作用域中的所有变量和常量。因此,在使用eval函数之前,要确保字符串代码中没有与当前作用域中冲突或者覆盖的变量或者常量。

    eval函数在执行字符串代码时,会忽略所有注释和空白符号。因此,在使用eval函数之前,要确保字符串代码中没有多余或者错误的注释或者空白符号。

    eval函数在执行字符串代码时,会把双引号内部的变量进行解析和替换。因此,在使用eval函数之前,要确保字符串代码中没有需要保持原样或者避免解析的变量。

    eval函数在执行字符串代码时,如果遇到return语句,会立即终止执行并返回该语句的值。因此,在使用eval函数之前,要确保字符串代码中没有不必要或者错误的return语句。

    根据以上信息和建议,我分析了一下您提供的PHP代码片段,并发现了以下几个可能导致问题的地方:

    您在$gf变量中拼接了一个正则表达式,并用双引号包裹了整个字符串。这样做可能导致正则表达式中含有$符号(表示匹配行尾)或者其他特殊字符(如转义符\\)时被解析为变量名或者转义序列而失效。建议您用单引号包裹整个字符串,并对正则表达式中需要转义的字符进行转义(如\\d表示匹配数字)。

    您在$gf变量中拼接了一个正则表达式,并用了点号(.)来连接两个子串。这样做可能导致正则表达式中含有点号(.)时被解析为匹配任意字符而失效。建议您用点号(.)前加反斜杠(\\.)来表示匹配点号本身。

    您在$gf变量中拼接了一个正则表达式,并将其赋值给了$lr_url变量。这样做可能导致正则表达式与原始网页内容不匹配而无法提取出所需数据。建议您检查一下$lr_url变量是否正确地存储了目标网页内容,并且与正则表达式相匹配。

综上所述,我建议您修改一下PHP代码片段如下:

// 假设 $lr_url 是目标网页内容// 假设 $bq_url 是需要拼接到结果后面的URLpreg_match_all("/<li><a href='\\/gudianbook\\/gudaiyishu\\/bencaogangmu\\/(\\d+).html/",$str, $d);foreach

参考技术B 建议避免使用eval()函数,而是将需要动态生成的代码作为一个字符串,然后将其传递给一个函数或方法,例如使用preg_match_all()函数时,可以将正则表达式字符串直接传递给它,而不是使用eval()函数动态生成。

uni组件传值注意

目录介绍

  • 01.组件传值遇到坑
  • 02.父组件传值给子组件
  • 03.子组件传值给父组件

01.组件传值遇到坑

  • 子组件给父组件传值注意点
    • 注意子组件触发事件定义的方法,首先在父组件中需要绑定子组件内部对应事件,然后一定要和父控件接受的保持一致,否则无法传递数据。
    //在area.vue中,进行事件触发,传递数据
    this.$emit(‘onConfirm‘,true, selectVal)
    
    //在select-school.vue中,需要在在子组件标签上绑定子组件内部对应事件,并且方法名一致
    <!-- 地区选择器 -->
    <optional :status=‘show‘ @onUpdate=‘onUpdate‘ @onConfirm=‘onConfirm‘></optional>
    
  • 遇到疑问?
    • 要是同级的组件,那么该如何传递数据呢?

02.父组件传值给子组件

  • 父组件的代码如下
    <!-- 父组件传子组件 -->
    <!-- 父组件内部写法 -->
    <template>
        <view>
            <h2>父组件</h2>
            <!-- 绑定自定义属性传递数据 -->
            <children style="color: #0000FF;" :value="valPar" ></children>
        </view>
    </template>
    
    <script>
        //引入子组件
        import children from "../../pages/ele/element-children1.vue"
        export default {
            data() {
                return {
                    valPar:"父组件传递过来的值"
                }
            },
            components:{
    			//注册子组件
                children
            },
        }
    </script>
    
  • 子组件的代码如下
    <!-- 父组件传子组件 -->
    <!-- 子组件内部写法 -->
    <template>
        <h2>子组件收到:{{value}}</h2>
    </template>
    
    <script>
        export default {
            props:{
                value:{
                    type:String,
                    default:"默认值"
                }
            },
            data() {
                return {
                    
                }
            },
        }
    </script>
    

03.子组件传值给父组件

  • 父组件的代码如下
    <!-- 子组件传父组件 -->
    <!-- 父组件内部写法 -->
    <template>
        <view>
            <!-- 接收到子组件传递的数据 -->
            <h2>父组件接收到的值:{{valueChild}}</h2>
            <!-- 在子组件标签上绑定子组件内部对应事件,并触发对应回调 -->
            <children style="color: #0000FF;" @Transmit="handle"></children>
        </view>
    </template>
    
    <script>
        //引入子组件
        import children from "../../pages/ele/element-children2.vue"
        export default {
            data() {
                return {
    				//定义属性接收数据
                    valueChild:"",
                }
            },
            components:{
    			//注册子组件
                children
            },
            methods:{
                // 子组件内部触发事件对应回调handle
                handle(val){
                    this.valueChild=val;
                }
            }
        }
    </script>
    
  • 子组件的代码如下
    <!-- 子组件传父组件 -->
    <!-- 子组件内部写法 -->
    <template>
        <view>
            <h2>子组件</h2>
            <!-- 点击按钮进行事件触发 -->
            <button @click="handleTransmit">点击给父组件传值</button>
        </view>
    </template>
    
    <script>
        export default {
            data() {
                return {
                    //要传递的数据
                    valueParent: "子组件传递过来的数据"
                }
            },
            methods: {
                handleTransmit() {
                    // 进行事件触发,传递数据
                    this.$emit("Transmit", this.valueParent)
                }
            }
        }
    </script>

以上是关于jaxa无法传值?的主要内容,如果未能解决你的问题,请参考以下文章

跳转页面与传值(Swift4)

miniui后台无法接收到input传值

uni组件传值注意

uni组件传值注意

再谈js传值和传址

ajax向 controller传值