PHP json_encode,数组在 javascript 中未正确显示

标签 php javascript jquery json

我有这个数组,我想将其解析为 JavaScript。

$offerText[] =

(
[0] => Name
[1] => Adres
[2] => ZIP
[3] => CITY
[4] => E-mail
)

我正在使用此代码来执行此操作:

$html .= '<td class="offerteCell"><a href="#" onclick="return addToOffer('.json_encode($offerText).');" class="offerte">Offerte</a></td>';

在我的 javascript 函数中,我希望将此数组发布到 ajax 调用中。

function addToOffer(offer_text) {
    $.ajax({
        url: "offer.php?action=add&offer_text="+offer_text,
        cache: false,
        method: "GET",
        async: false,
        complete: function(request) {
            if(!request || request.readyState != 4 || request.status != 200) return false;
            eval("var obj = "+request.responseText);

            $("span.error").hide();
            $("p").removeClass('error');
            if (obj.errors) {
                for (var i in obj.msg) {
                    $("#error_form_"+i).html(obj.msg[i]).css('display','block');
                    $("#p_form_"+i).addClass('error');

                    alert("error");
                }
            } else {
                var offer = $('#OfferContainer');
                offer.show().html(obj.html);

                var txt = Config.langOfferComplete;
                var buttons = {};
                buttons[Config.langOk] = false;
                buttons[Config.langGoToOffer] = true;

                $.prompt(txt,{
                    submit: function(v,m,f){
                        if (v) {
                            window.location = Config.base + '/' + Config.lang +  "/offer.htm";
                        }
                    },
                    buttons: buttons
                });
            }

            return false;
        }
    });

    return false;
}

但这不起作用有人知道我做错了什么吗?我观察 html 的输出,得到以下结果:

<a class="offerte" naam","adres","postcode","woonplaats","e-mailadres"]);"="" onclick="return addToOffer([" href="#">Offerte</a>

最佳答案

应该是这样

onclick="return addToOffer('.addslashes(json_encode($offerText)).');"

如果您有如此令人困惑的字符串文字,也可以考虑使用 sprintf,它会让事情看起来更简单:

$html .= sprintf(
   '<td class="offerteCell">'.
   '<a href="#" onclick="return addToOffer(%s);" class="offerte">Offerte</a>'.
   '</td>',
   addslashes(json_encode($offerText)));

我在这里用换行符做得太过分了,但我希望结果在此页面中可以轻松查看。

关于PHP json_encode,数组在 javascript 中未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942344/

相关文章:

php - 如果其值已存在,如何从下拉列表中禁用选项

php - 从 PHP 启动守护进程

javascript - 如何自动从站点下载文件?

javascript - 仅从 td 表搜索而不是从标题 (th)

php - 将动态检索的内容添加到 jQuery Mobile PHP MVC 的 jQuery 对象

php - 将 PHP 数组的内容存储在 MySQL 数据库中

php - 如何在表单中使用选择框并提交所选值?

javascript - npm install 是否意味着该脚本仅适用于 Node.js

javascript - 如何停止 onbeforeunload 事件?

jQuery 动态按钮单击处理程序