2013-01-04 72 views
1

我传递一个编码的json数组在ajax GET请求(它是跨域),但我得到一个404,因为它参数化URL中的数据,并且太长。大JSON请求外部url

在跨域使用JavaScript发送数据到web服务器的更好的方法是什么? 这是相当少量的数据< 1000个变量,每个变量只有大约50个字符。

+2

你可以发布你的JS代码? –

+0

出于好奇,服务器不应该返回414(请求 - URI太长)状态吗? –

+0

它是iis所以返回404.15或类似 – ShiftyThomas

回答

1

正常的HTML POST请求的主体没有限制。

JavaScript post request like a form submit

+2

后是解决方案。而作为跨域请求并不妨碍您使用它! –

+0

@Paul C如何在上述问题中使用该函数处理响应? webservice会返回一个JSON字符串。 – ShiftyThomas

+0

很好的问题。我不知道如何,但这个讨论似乎相关。 http://stackoverflow.com/questions/374644/how-do-i-capture-response-of-form-submit或者你可以回到你开始的地方,并批量发送数据直到完成。 –

0

请使用POST方法而不是GET方法.... 在你的Ajax尝试JSONP因为你是访问与呼叫跨域回function.For更多有关JSONP看到该链接: - http://www.cypressnorth.com/blog/programming/cross-domain-ajax-request-with-json-response-for-iefirefoxchrome-safari-jquery/

http://json-p.org/

您所需要的最重要的事情是,你正在使用做卷曲必须设置一些标题为允许HTTP到HTTPS连接的服务器端页面。这是下面....

header("Access-Control-Allow-Origin: your https url"); 
header("Access-Control-Allow-Methods: POST, GET"); 
header("Access-Control-Max-Age: 1728000"); 

header("Access-Control-Allow-Headers: Content-Type, Connection, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control"); 
header("Connection: close"); 
+0

我试过这个,但无法让它起作用,我还必须允许origin *作为后期URL可以是任何东西。代码不驻留在服务器上,所以我不能使用curl发布,如果我参数化数据,我也会得到与jsonp相同的问题,因为我受限于url大小。 – ShiftyThomas