Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javascript在URL中传递JSON_Javascript_Php_Json_Codeigniter_Url - Fatal编程技术网

从Javascript在URL中传递JSON

从Javascript在URL中传递JSON,javascript,php,json,codeigniter,url,Javascript,Php,Json,Codeigniter,Url,我有一个从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 Psych

我有一个从
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.
$.ajax({
        type: 'POST',
        data: strJSON,
        contentType: 'application/json',
        url: yourMethodUrl
    }
我得到了什么? 错误\u 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

无法按原样发送JSON字符串-必须对其进行编码

有一个Javascript函数可以实现这一点

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

这应该能奏效

不应将其作为url参数传递。你应该用邮局寄。因此,yout JS代码可以如下所示:

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.
$.ajax({
        type: 'POST',
        data: strJSON,
        contentType: 'application/json',
        url: yourMethodUrl
    }

我不知道您的服务器方法是如何编写的,但您可能也会在其中更新一些内容,这样它就不会尝试读取url,而是使用请求的值。

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

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


从GET改为POST并不是一个无伤大雅的选择。另外,POST可以阻止HTTP缓存的使用。
现在,考虑到最初的示例似乎需要生成自定义文档,缓存可能会有一些帮助。

与其将其作为URL的一部分,不如提交表单。404错误与JSON无关。这与缺少所请求的文件有关。由于您将此帖子标记为Codeigniter,这意味着您没有控制器文件AccountingController{},或者您的控制器类在那里,但是缺少方法generate_pdf()。我投票否决了你,因为你没有提供所有的信息,让我猜个不停。试着让人们更容易地帮助你。如果我的问题有点含糊,我很抱歉,但我已经确定我有生成pdf()的函数。我有一种预感,这与URL编码有关。实际上,在json部分,我尝试替换一个伪参数,结果成功了。所以问题确实出在你的URL中的JSON部分,我没有看到
index.php
,所以你用htaccess删除了它。如果是的话,那你为什么有
accounting/accounting
。我想说的是:你确定这个url格式正确吗?因为url的最后一部分被认为是不会产生404错误的段。我尝试过这个方法,但我不能使用这个方法,因为我只需要传递参数,我不需要它来回溯数据。我不确定你的意思。POST完全用于将数据传递给它调用的任何对象。每当客户机需要向服务器传递任何内容时,都会使用POST谓词。当您试图使用url参数发送数据时,实际上使用了GET动词,其目的是检索数据,而不是发送数据。所以你做的事情和你应该做的完全相反。至少,如果我正确理解了这个问题。@karol.barkowski,如果我想将搜索数据发送到服务器,但我也希望每个搜索都有一个唯一的URL,以便用户可以将搜索链接发送给其他人,我该怎么办?仍然会出现相同的错误,可能是因为\t\t\t\ts?在url中?尝试了小提琴,但出现错误:(当我从参数中删除它时,我知道它实际上是JSON的东西bcoz。我的代码工作正常。你会得到什么错误?404?接收页面是否正确编程以能够接受此类参数?404表示某种重写错误。如果需要传递变量,可能需要执行domain.com/url?JSON=thestring。请参阅更新的fiddle:你更新了fiddle,现在没有显示任何404错误,它显示了一个空白页。现在我如何获得传递的值?你必须从服务器端执行此操作