Хорошо ... Оказывается, @ Adam Plocher был прав в первом предположении. Это флаг UseShellExecute.
Я использовал свою оболочку для запуска процесса, который имел UseShellExecute = false, потому что это было необходимо для перенаправления STDOUT и STDERR, которые я хотел, чтобы поместить их в мой журнал.
Я думал, что раньше пытался использовать UseShellExecute = true, но я думаю, что когда я пытался, я получил ошибку, потому что он все еще пытался перенаправить эти потоки, и я, должно быть, остановился на этом.
Я использовал мою другую обертку, которая имеет UseShellExecute = true, но не дает мне STDOUT и STDERR, и это работает. Я думаю, что могу с этим смириться, так как в любом случае достаточно подробного ведения журнала в моем коде.
Я до сих пор не знаю, ПОЧЕМУ так ведет себя при запуске процесса с UseShellExecute = false;
Начиная со всего Вы делаете со всем кроме URL, и domid передает его эти $.get
, почему бы не это?
function process_type(url, domid, args) {
$.get(url, args, function(data) {
$(domid).html(data);
});
}
// call it without type
process_type('myurl', 'domid', {domain:'..', scanid:'...'});
// call it with type
process_type('myurl', 'domid', {type: '..', domain:'..', scanid:'..'});
все параметры в JavaScript являются дополнительными, можно использовать массив параметров в функции для доступа к параметрам, переданным порядковым образом как так:
function myFunction(option1)
{
var option2 = arguments[1];
if(arguments[0] == option1)
alert("Happy Day, Option1 = " + option1 + ", Option2 = " + option2);
}
myFunction("Hello", "World");
Производит: Счастливый День, Option1 = Привет, Option2 = Мир
, Надо надеяться, это иллюстрирует, как можно использовать массив arguments для улучшения некоторого кода.
function process_type(url, domid, domain, scan_id)
{
var myOptions = {
domain: domain,
scan_id: scan_id
};
if(arguments[4])
myOptions["type"] = arguments[4];
$.get(url, myOptions,
function(data)
{
$(domid).html(data);
});
}
Тогда можно назвать его с последним параметром, являющимся типом как дополнительный, если параметр передается, это используется, если не это опущено.
Также, так как фактический параметр является дополнительным во-первых, можно также добавить имя до конца функционального определения и использовать то же, если бы, но вместо arguments[4]
Вы сделали бы if(type) myOptions["type"] = type;
function process_type(url, domid, domain, scan_id, type)
{
var myOptions = {
domain: domain,
scan_id: scan_id
};
if(type)
myOptions["type"] = type;
$.get(url, myOptions,
function(data)
{
$(domid).html(data);
});
}
, Этот Вызов включал бы тип
process_type("xxx", "xxx", "xxx", "xxx", "xxx");
, где этот вызов не был бы
process_type("xxx", "xxx", "xxx", "xxx");