在php中回显javascript,无法正确引用

时间:2016-08-15 18:50:52

标签: javascript php

我想基于一些php if语句执行一些javascript执行,但是我无法正确获取链接的引号。在控制台中,它显示a)在以下行中缺失。我确定搞砸了报价,当我刚拿到javascript时它是正确的,但现在混合了echo我无法得到它。我在整个事情中使用单引号并在内部加倍。剩下的工作正在进行中,请看看并帮我解决这个问题。谢谢!

$(this).append("<a href=""index.php?patient=test&a="".""appointment_nums[count]""."">Schedule Appointment   </a>"); 


if ($mode== 'view' && $action==''){
    echo '<script >

$(document).ready(function(e){

    $("body").click(function(event) {
redirect = $(event.target).context.getAttribute("href");
});


checkColumns(); 


});

function checkColumns(){

     count=0;

appointment_nums = [];
$(".mgrid_table > tbody > tr").each(function() {

appointment_nums.push($(this).find("td").eq(3).find("label").html());

appointment_nums = appointment_nums.filter(function(n){ return n != undefined     }); 

});
appointments = appointment_nums.length;

appendColumns();

}
function appendColumns(){


 function ajax() {

    return $.ajax({
        type:"post",
        url: "../testrequest.php",
        data : {appointment_nums:appointment_nums},
        dataType:"json",
    });
    };

ajax().done(function(result){

$("table:nth-of-type(2) > tbody > tr > td:nth-of-type(2)").each(function() {    
if($(this).children().length < 1){
    if (result[count] == false){
    $(this).append("<a href=""index.php?patient=test&a="".""appointment_nums[count]""."">Schedule Appointment   </a>"); 
    }else{

        $(this).append("<span>Waiting For Doctor to Schedule</span>");
        }
}
    count = count + 1 ;
});

});
}
</script>';

2 个答案:

答案 0 :(得分:2)

要么改变报价类型,要么开始转义。例如使用这个原始(和破碎)片段:

.append("<a href="foo.php" onclick="someFunction("hi mom!");">");

你实际上有3级深度的代码。有原始的Javascript(第1层):

.append("<a href="foo.php" onclick="someFunction("hi mom!");">");
        ^--------------layer 1--------------------------------^

然后是嵌入式HTML(第2层):

.append("<a href="foo.php" onclick="someFunction("hi mom!");">");
                 ^-------^         ^----------layer 2---------^

然后是子嵌入式Javascript(第3层):

.append("<a href="foo.php" onclick="someFunction("hi mom!");">");
                                                 ^-------^

在每种情况下,您都必须使用适合您要嵌入的图层的引号。因此,要在第1层中嵌入第2层引号,请使用escapes:

.append("<a href=\"foo.php\" onclick=\"someFunction(\"hi mom!\");\">");

所以现在你已经在第1层获得了有效的Javascript。但HTML本身仍然没有被破坏,因为一旦该片段嵌入到DOM中,你最终会得到

<a href="foo.php" onclick="someFunction("hi mom!");">
                          ^---start attribute
                                        ^---end attribute
                                                   ^--start unterminated attribute

所以现在你必须担心在第2层嵌入第3层。因为它是Javascript-in-html:

.append("<a href=\"foo.php\" onclick=\"someFunction(&quot;hi mom!&quot;);">\");
                 ^--------^----------^ etc... layer 2-in-1 escapes
                                                    ^^^^^--------^^^^^ layer 3-in-1 quotes

基本上 - 您始终必须考虑将看到代码的上下文。如果您在JavaScript中嵌入HTML,则HTML中的任何引号也必须是有效的Javascript。如果您将Javascsript嵌入HTML中,那么任何JS引号也必须生成有效的HTML。当你将3或4级语言嵌套时,你必须考虑所有层。每个图层本身必须对所有父图层都有效。

答案 1 :(得分:1)

使用单引号.. IE

$(this).append('<a href="index.php?patient=test&a=' . 'appointment_nums[count]' . '>Schedule Appointment   </a>');