3

我有一个从 atextarea中提取的数据,如下所示:

敬启者:
                            兹证明 JOHN SMITH 先生/女士在 2013-2014 学年第一学期就读于该机构
                            作为一名二年级的心理学学生。以下是他/她的账户声明。

我试过什么?

var letter = $('#textarea_letter').val();
var myJSON = {"letter": letter }; 
var strJSON = JSON.stringify(myJSON); 

$('#toPDF_button').attr('href', 'generate_pdf/'+ myJSON +'/pdf'); 
// this button then sends the letter to a function w/c generates the PDF

我得到了什么?

Error_404 页面

我需要在参数 url 中传递字母,这就是它在 url 中的样子:

localhost/accounting/generate_pdf/{"letter":"TO WHOM IT MAY CONCERN:\n\t\t\t\t\t\t\tThis is to certify that Mr/Ms JOHN S> SMITH is enrolled in this institution for this First Semester of School Year 2013-2014\n\t\t\t\t\t\t\tas a second year BSIT student. Below is his/her STATEMENT OF ACCOUNT."}/pdf

我怎么能做到这一点?我是 JSON 新手。谢谢

更新

这样做后,var myJSON = encodeURIComponent(JSON.stringify(myJSON1));
这里是新的 URL,但仍然出现相同的错误

http://localhost/accounting/accounting/generate_sta/%7B%22letter%22%3A%22TO%20WHOM%20IT%20MAY%20CONCERN%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5CtThis%20is%20to%20certify%20that%20Mr%2FMs%20JOHN%20SMITH%20G.%20SEBUCAO%20is%20enrolled%20in%20this%20institution%20for%20this%20First%20Semester%20of%20School%20Year%202013-2014%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctas%20a%20second%20year%20Psychology%20student.%20Below%20is%20his%2Fher%20STATEMENT%20OF%20ACCOUNT.%22%7D/pdf
4

4 回答 4

13

您不能按原样发送 JSON 字符串 - 您必须对其进行编码。

有一个Javascript函数。

var strJSON = encodeURIComponent(JSON.stringify(myJSON));

这应该可以解决问题。

于 2013-09-20T08:53:30.423 回答
1

您可以使用 encodeURIComponent() 函数对 URI 组件进行编码。此函数对特殊字符进行编码。此外,它还对以下字符进行编码: , / ? : @ & = + $ # 提示:使用 decodeURIComponent() 函数对编码的 URI 组件进行解码。

var jsonURLS = encodeURIComponent(JSON.stringify(myJSON));

于 2013-09-20T08:58:50.593 回答
0

您不应将其作为 url 参数传递。您应该使用 POST 发送它。所以你的 JS 代码可能如下所示:

$.ajax({
        type: 'POST',
        data: strJSON,
        contentType: 'application/json',
        url: yourMethodUrl
    }

我不知道你的服务器方法是如何编写的,但你也可以在那里更新一些东西,这样它就不会尝试读取 url 并使用请求的值。

于 2013-09-20T08:54:59.070 回答
0

从 GET 更改为 POST 它不是一个无害的选择。除此之外,POST 排除了 HTTP 缓存的使用。现在,考虑到似乎需要生成自定义文档的初始示例,缓存可能会有所帮助。

于 2016-01-07T10:27:38.497 回答