由于我已升级到Slim v3
,所有GET
和POST
路由都运行良好,但PUT
路由不正常。
我有一个班级,我做这样的事情:
$this->slimObj->put('/path/{ID}', array($this, 'method'));
function method ( $request, $response, $args ) {
$response = $response->withHeader('Content-type', 'application/json');
$response = $response->withHeader('Access-Control-Allow-Origin', '*');
$ID = $args['ID'];
// ...
return $response;
}
我使用Chrome 48
调试我的Cordova
应用,我在PUT
电话后收到此错误:
XMLHttpRequest cannot load
http://example.com/file.php/path/149. No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:4400' is therefore not allowed access. The response had HTTP status code 400.
我对GET
和POST
请求使用类似的回调,它们工作正常,我不明白为什么它对PUT
不起作用。
从curl
调用它时,它可以工作:
curl -X PUT -H 'Content-Type: application/json' -d '{"data": 5 }' http://example.com/file.php/path/149
我使用JS
:
ajax
调用Slim API函数
$.ajax({
type: 'PUT',
url: 'http://example.com/file.php/path/149',
dataType: "json",
data: {
"data": 5
},
success: function(result) {
// ...
},
error: function() {
// Always getting error
}
});
如何从Chrome 48
开始使用它?
我不太确定,但我认为以前的Chrome
版本一切正常。
由于
答案 0 :(得分:0)
我刚刚解决了这个问题:
SqlCommand cmd1 = new SqlCommand("spG_Groups", conn);
cmd1.CommandType = CommandType.StoredProcedure;
List<String> YrStrList1 = new List<string>();
foreach (ListItem li in chGp.Items)
{
if (li.Selected)
{
YrStrList1.Add(li.Value);
cmd1.Parameters.Add(new SqlParameter("@CName", txtCName.Value));
cmd1.Parameters.Add(new SqlParameter("@CEmail", txtemail.Value));
cmd1.Parameters.Add(new SqlParameter("@GName", YrStrList1.ToString()));
cmd1.ExecuteNonQuery();
}
}
在初始化任何路线之前。