2014-10-27 60 views
2

我有以下ajax脚本(原型js),但它只是发布部分文本。阿贾克斯请求只发布部分文字

Selenium.prototype.doSaveCopyPaste = function(locator) { 
var element = this.page().findElement(locator); 
var text = jQuery(element).text(); 
console.log(text); 

var ajax = new Ajax.Request('http://copypaste.test', { 
    method: 'post', 
    parameters: 'report=' + text, 
    processData: false, 
    onSuccess: function(transport) { 
    var response = transport.responseText || "no response text"; 
    alert("Success! \n\n" + response); 
    }, 
    onFailure: function() { alert('Something went wrong...'); } 
}); 
    console.log(ajax); 
} 

当我在控制台输出text我得到通过locator过的一切,一个例子是

------------------------------------------------------------ 
<br> 
Header 1 
<br> 
------------------------------------------------------------ 
<br> 
Header 2 
<br> 
Sub Heading: A Name 
<br> 
Sub Heading 2: Another Name 
<br> 
Sub Heading 3: data here 
<br> 
etc etc for about 3000 characters 

于是我意识到我没有在这里有一个字符串,这可能是为什么即时通讯有问题?..所以我怎么可能所有的数据发送到我的PHP脚本..

if ($_POST['report']) { 
    echo $_POST['report']; 
} 

回答

2

您需要在发布之前进行编码您的字符串:

... 
parameters: 'report=' + encodeURIComponent(text); 
... 

现在在你的字符串中的字符可以使它无效,将它分成多个键 - 值字段等

+1

太感谢你了,你刚刚结束了很长,头打表调试会话: - ) – Richlewis 2014-10-27 15:42:47