从Javascript在URL中传递JSON

0aydgbwb  于 2022-12-10  发布在  Java
关注(0)|答案(5)|浏览(226)

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

TO WHOM IT MAY CONCERN:
                            This is to certify that Mr/Ms JOHN SMITH is enrolled in this institution for this First Semester of School Year 2013-2014
                            as a second year Psychology student. Below is his/her STATEMENT OF ACCOUNT.

我尝试过什么?

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

我得到了什么?

错误_404页面

我需要在param中传递这封信的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
falq053o

falq053o1#

您不能直接发送JSON字符串,必须对其进行编码。
有一个Javascript函数用于此。

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

这个应该可以

mbzjlibv

mbzjlibv2#

你可以使用encodeURIComponent()函数对URI组件进行编码。2这个函数对特殊字符进行编码。3此外,它还对以下字符进行编码:,/?:@ & = + $ #提示:使用decodeURIComponent()函数对编码的URI组件进行解码。
如果您有任何问题,请使用以下代码:

gxwragnw

gxwragnw3#

你不应该把它作为url参数传递,你应该用POST来发送它,所以你的JS代码应该看起来像这样:

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

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

eufgjt7s

eufgjt7s4#

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

9nvpjoqh

9nvpjoqh5#

您是否获得了方便的解决方案?
如果没有,我建议做些小改动:

  • 原样:本地主机/记帐/生成pdf//pdf
  • 目标:本地主机/记帐/生成pdf?json=
  • 假设:你的JSON编码为URIComponent(JSON.字符串化(myJSON));
  • 附加代码:您必须在服务器端更改几行代码来处理$_GET [′ json ′],

希望能有所帮助

相关问题