代码之家  ›  专栏  ›  技术社区  ›  Sammaye

原型AJAX从PHP获取错误响应

  •  0
  • Sammaye  · 技术社区  · 15 年前

    blah £ £
    

    现在,当它第一次通过Prototype时,它使用escape函数正确地编码字符串。此处显示完整代码(escape\u函数变量为id\u opt['escape\u function']):

    escape_function:        escape, // or encodeURIComponent
    
    var new_text = id_opt['escape_function']($F(id + '_edit'));
    var params = 'id=' + id + '&content=' + new_text;
    if(id_opt['type'] == 'select') {
        params += '&option_name=' + $(id + '_option_' + new_text).innerHTML;
    }
    
    var ajax_req = new Ajax.Request(
        id_opt['save_url'],
        {
            method: 'post',
            postBody: params,
            onSuccess: function(t) { alert(t.responseText); EditInPlace._saveComplete(id, t); },
            onFailure: function(t) { EditInPlace._saveFailed(id, t); }
        }
    );
    

    当我再次提交它时,一切都很好,直到出现警报(t.responseText);当原型显示一些未知的字符来代替。最奇怪的是,数据库字段中的信息仍然是blah(这是正确的),但是prototype用blah(?)(?)响应((?)符号是未知的符号消除器)。

    我得出的结论是,PHP响应了正确的信息,但由于某种原因,prototype获取了错误的信息……但这两者之间没有什么关系,这让我非常困惑。作为一个新手,我并不擅长解决这个问题。

    2 回复  |  直到 13 年前
        1
  •  0
  •   umop    15 年前

    我会用一种工具,比如 FireBug Charles 评估来自PHP脚本的流量(除非您已经这样做了)。如果一切正常,请使用 alert() 语句,以查看错误的翻译何时发生,以确认您的原型怀疑。

        2
  •  0
  •   Sammaye    15 年前

    我决定用JQuery重写这个脚本,结果很好。我差点让它在原型中使用编码类型,但它会在每个磅符号前添加重音,这是不够好的。