Jquery 调用jsonp跨域Web服务时出错
我是一名.NET开发人员,试图使用PhoneGAP创建一个简单的跨平台(Android/iOS)应用程序。我在PhoneGAP应用程序中使用.NET web服务时遇到问题,这是我的JS代码:Jquery 调用jsonp跨域Web服务时出错,jquery,cordova,jsonp,Jquery,Cordova,Jsonp,我是一名.NET开发人员,试图使用PhoneGAP创建一个简单的跨平台(Android/iOS)应用程序。我在PhoneGAP应用程序中使用.NET web服务时遇到问题,这是我的JS代码: function DoIt() { var surl = "http://www.silverlight4web.com/onlinegame/rest.aspx"; $.ajax({ type: 'GET', url: surl, c
function DoIt()
{
var surl = "http://www.silverlight4web.com/onlinegame/rest.aspx";
$.ajax({
type: 'GET',
url: surl,
crossDomain: true,
contentType: "application/javascript",
data: { "UserID": "1234" },
dataType: "jsonp",
success: function(val) {
var myjsonobject = val;
alert(myjsonobject.accounting[0].firstname + ' ' + myjsonobject.accounting[0].lastname);
},
error: function(xhr, status, error) { alert(error); },
async: false,
cache: false
});
}
DoIt();
</div>
</form>
这是我的服务器端页面(CS):
</div>
</form>
(ASPX):
</div>
</form>
JQuery前面的数字每次都会改变,我在google上看到过一些这样的例子,但是没有一篇文章可以解决我的问题,出了什么问题?我应该检查/更改服务器上的任何内容还是缺少一些代码?我以前也有类似的问题(我使用node.js的服务器端),不记得我是如何修复的。我没有环境来测试你的案例。但这里有一些提示供您修复它们
</div>
</form>
</div>
</form>
</div>
</form>
function success(data) {
//your code
var myjsonobject = data;
alert(myjsonobject.accounting[0].firstname + ' ' + myjsonobject.accounting[0].lastname);
}
function DoIt()
{
var surl = "http://www.silverlight4web.com/onlinegame/rest.aspx";
$.ajax({
type: 'GET',
url: surl,
crossDomain: true,
contentType: "application/javascript",
data: { "UserID": "1234" },
dataType: "jsonp",
success: function(val) {
success(val);
},
error: function(xhr, status, error) { alert(error); },
async: false,
cache: false
});
}
DoIt();
</div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params["callback"] != null)
{
//here will return "success(...)"
output = Request.Params["callback"] + "(" + GetData() + ");";
}
}
让我知道它是否有效:)jQuery“欺骗”并将回调函数的名称设置为随机值,然后插入脚本标记,因为JSONP不是真正的ajax,jQuery只是让它看起来更简单。服务器似乎没有使用JSONP响应,也没有相应地设置包装回调函数的名称,这可能是因为您忽略了该参数,请尝试执行
”http://www.silverlight4web.com/onlinegame/rest.aspx?callback=?"
并确保将回调函数的名称设置为jQuery传递的内容等。我将surl更改为=var surl=“?”;但是再次出现同样的错误,请您进一步解释一下:的确切含义是什么,并确保您将回调函数的名称设置为jQuery传递的内容,等等。?JQuery生成一个随机名称,那么我如何知道传递的是什么?通过:,在浏览器上给我正确的结果,这里出了什么问题?你能给我一些代码提示吗?我的所有代码都在上面,我应该在哪里添加Response.ContentType?你的意思是我应该使用Response.Write而不是用HTML显示输出?你试过前3步了吗?第四步不适合您的情况,因为您还显示了其他html内容。“…HTML页面”“应该由web api/web服务完成,并且只向ajax调用提供提要。您能否更详细地声明步骤2和步骤3?你能给我代码样本吗?
</div>
</form>