AJAX更改正在发送的字符串的内容

时间:2017-01-27 16:21:52

标签: javascript php ajax

这让我发疯了!

我在JS中有这样的东西:

    movl    $.L.str.2, %edi  # .L.str.2 is "%d\n"
    xorl    %eax, %eax
    callq   printf

控制台输出:

xmlhttp.open("POST", "/note.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
console.log(" >>>> " + note  + " " + noteHTML);
xmlhttp.send("what=edit&note=" + note + "&noteHTML=" + noteHTML + "&noteIdx=" + noteIdx);

此代码正确地发送大部分文本,也就是在 >>>> C++ C++ 中我得到的内容与JS端的内容相同,但无论出于何种原因,它都对字符串note.php做了一些非常奇怪的事情。 。当字符串的C++note设置为noteHTML时,PHP端(C++)到达的内容为note.php而不是C } !!这对我来说没有任何意义。也许我选择的编码有问题。我试过了C++html,但无论出于什么原因,我甚至都没有在php方面得到任何东西,所以我放弃了进一步研究这个方向。知道为什么吗?

plain/text

浏览器输出:

else if ($_POST['what'] == "edit")
{
    printArray($_POST);
}

WHY吗

1 个答案:

答案 0 :(得分:0)

您必须像这样更改它(在每个元素上使用encodeURIComponent()):

xmlhttp.open("POST", "/note.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
console.log(" >>>> " + note  + " " + noteHTML);
xmlhttp.send("what=edit&note=" + encodeURIComponent(note) + "&noteHTML=" + encodeURIComponent(noteHTML) + "&noteIdx=" + encodeURIComponent(noteIdx));

https://stackoverflow.com/a/4276396/4916265