我有这样的javascript请求将数据传递给play框架,并且基于不同的propertyKey,事件应该有不同的参数。
我这样做。
js由多个窗口使用。所以this._propertyKey将根据不同的窗口进行更改。
_postEvent: function(customData) {
var propertyKey = this._propertyKey;
var Event = {
propertyKey : customData
},
url = play.url({
alias: 'controllers.eventController.trackEvent',
args: Event,
withCsrf: true
});
return $.ajax(url, {
type: 'POST'
});
},
触发此代码时的问题。根据它发送的请求,它总是Event.propertyKey而不是我传入的自定义propertyKey。例如,如果对于这个窗口,propertyKey =' region'。我想要' region'作为参数传入。但无论propertyKey是什么,post请求总是发送Event.propertyKey = XXX而不是Event.region = XXX。
有没有办法在这里传递propertyKey是否可以根据不同的页面动态更改?
答案 0 :(得分:0)
当一个函数作为一个对象的方法被调用时,它的
this
被设置为调用该方法的对象。 MDN Reference
要修复代码的这一部分,请使用window
代替this
。
为了将属性名称设置为另一个变量的值,您必须先创建对象,然后使用[]
设置键/值对。 SO Reference
var Event = {};
Event[propertyKey] = customData;
var url = play.url({
alias: 'controllers.eventController.trackEvent',
args: Event,
withCsrf: true
});