return json if jsonp has not callback (#1438)
return json if jsonp has not callback
This commit is contained in:
		@ -695,7 +695,12 @@ func (c *Context) SecureJSON(code int, obj interface{}) {
 | 
				
			|||||||
// It add padding to response body to request data from a server residing in a different domain than the client.
 | 
					// It add padding to response body to request data from a server residing in a different domain than the client.
 | 
				
			||||||
// It also sets the Content-Type as "application/javascript".
 | 
					// It also sets the Content-Type as "application/javascript".
 | 
				
			||||||
func (c *Context) JSONP(code int, obj interface{}) {
 | 
					func (c *Context) JSONP(code int, obj interface{}) {
 | 
				
			||||||
	c.Render(code, render.JsonpJSON{Callback: c.DefaultQuery("callback", ""), Data: obj})
 | 
						callback := c.DefaultQuery("callback", "")
 | 
				
			||||||
 | 
						if callback == "" {
 | 
				
			||||||
 | 
							c.Render(code, render.JSON{Data: obj})
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							c.Render(code, render.JsonpJSON{Callback: callback, Data: obj})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// JSON serializes the given struct as JSON into the response body.
 | 
					// JSON serializes the given struct as JSON into the response body.
 | 
				
			||||||
 | 
				
			|||||||
@ -596,6 +596,20 @@ func TestContextRenderJSONP(t *testing.T) {
 | 
				
			|||||||
	assert.Equal(t, "application/javascript; charset=utf-8", w.HeaderMap.Get("Content-Type"))
 | 
						assert.Equal(t, "application/javascript; charset=utf-8", w.HeaderMap.Get("Content-Type"))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Tests that the response is serialized as JSONP
 | 
				
			||||||
 | 
					// and Content-Type is set to application/json
 | 
				
			||||||
 | 
					func TestContextRenderJSONPWithoutCallback(t *testing.T) {
 | 
				
			||||||
 | 
						w := httptest.NewRecorder()
 | 
				
			||||||
 | 
						c, _ := CreateTestContext(w)
 | 
				
			||||||
 | 
						c.Request, _ = http.NewRequest("GET", "http://example.com", nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.JSONP(201, H{"foo": "bar"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert.Equal(t, 201, w.Code)
 | 
				
			||||||
 | 
						assert.Equal(t, "{\"foo\":\"bar\"}", w.Body.String())
 | 
				
			||||||
 | 
						assert.Equal(t, "application/json; charset=utf-8", w.HeaderMap.Get("Content-Type"))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Tests that no JSON is rendered if code is 204
 | 
					// Tests that no JSON is rendered if code is 204
 | 
				
			||||||
func TestContextRenderNoContentJSON(t *testing.T) {
 | 
					func TestContextRenderNoContentJSON(t *testing.T) {
 | 
				
			||||||
	w := httptest.NewRecorder()
 | 
						w := httptest.NewRecorder()
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user